Dezember 05, 2021, 05:14:28

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Berechnung Verbrauch

Begonnen von martenk, Juli 09, 2021, 07:41:39

⏪ vorheriges - nächstes ⏩

martenk

hab leider noch ein weiteres Problem

brauche in dieser Prozedur noch eine weitere Variable aus einer anderen Tabelle

dazu nehme ich diesen code

     

  Dim dbs As DAO.Database
   Dim qdf As DAO.QueryDef
   Dim strSQL, strSQL1 As String
   Dim Gas, Wasser, Strom, dat, Tage, Stromneu, Wasserneu, Gasneu, reminddate, Haus, Endreinigung
   Dim datebis As Date, datevon As Date
   
   
   datevon = "24.10.2021"
   datebis = "07.11.2021"
   Haus = "A1"
   
    Set dbs = CurrentDbstrSQL1 = "SELECT * FROM Objekte WHERE [Objekt-Nr]  = A10"
  Set rsn = CurrentDb.OpenRecordset(strSQL1, dbOpenSnapshot)

Bekomme dann Laufzeitfehler 1 Parameter wurden erwartet, aber es wurden zu wenig übergeben

DF6GL

Hallo,

deklariere die Variablen wie angesprochen richtig und vernünftig!


Hier ist das zusätzliche Wissen nicht angewandt:

ZitatDim Gas, Wasser, Strom, dat, Tage, Stromneu, Wasserneu, Gasneu, reminddate, Haus, Endreinigung


Fehlerquelle:

ZitatSet dbs = CurrentDb

Dim strSQL1 As String

strSQL1 = "SELECT * FROM Objekte WHERE [Objekt-Nr]  = 'A10'"





Das ist falsch:

   datevon = "24.10.2021"
   datebis = "07.11.2021"

und muss so lauten:

   datevon = #10/24/2021#
   datebis = #11/07/2021#

martenk

datbis kommt so an datbis = "19.09.2021"

datebis = Format(datbis, "\#mm\/dd\/yyyy\#")

klappt leider nicht

DF6GL

Hallo,


Zitatdatbis kommt so an datbis = "19.09.2021" 

was meinst Du damit?


Zitatdatebis = Format(datbis, "\#mm\/dd\/yyyy\#")

Was ist "datbis"???

Wenn es sich um  Formular-Steuerelemente handelt, dann setze immer "Me!" vor dessen Namen.

Ansonsten wäre die Zuweisung korrekt.

Und poste immer den kompletten Code einer oder aller betroffenen Prozeduren...

martenk

Hallo

hab nochj eine Frage

wollte diese Funktion verwenden

  Tage = DateDiff("d", datevon, datebis)
datevon und datebis kommen in diesem Format #06/05/2021#

ich brauche es aber so

05.06.2021

DF6GL

Juli 13, 2021, 15:38:01 #20 Letzte Bearbeitung: Juli 24, 2021, 13:04:35 von DF6GL
Hallo,


Zitatich brauche es aber so

05.06.2021


was redest Du denn da?  "05.06.2021"   ist ein Datum und kein Tag...



Du willst die Tage im definierten Zeitraum berechnen.

Dann stimmt die Codezeile, wenn


"Tage" vom Datentyp Long ist.
dateVon und datebis vom Datentyp Datum/Uhrzeit sind.


Also so  (was Du bis jetzt immer ignorierst):

Dim lngTage as Long      ' vernünftig benamsen und korrekten Datentyp definieren!!!!!!!! wenn es sich um  Variablen handelt
Dim datDateVon As Date
Dim datDateBis  As Date

lngTage = DateDiff("d", datDateVon, datDateBis)

[Edit]
oder wenn es sich nur um Steuerelemente handelt (Referenz auf das aktuelle Objekt (Formular) voranstellen) und evtl. leere Felder berücksichtigen:

Me!Tage = DateDiff("d", nz(Me!datevon,Date)  , nz(Me!datebis,Date)  )

[/Edit]


Du solltest Dich dringend mit den Grundlagen der VBA-Programmierung auseinandersetzen und vor allen Dingen die Vorschläge, die Du bekommst, auch (überall) umsetzen.

martenk


markus888

Zitat von: DF6GL am Juli 13, 2021, 12:57:22Das ist falsch:

   datevon = "24.10.2021"
   datebis = "07.11.2021"

und muss so lauten:

   datevon = #10/24/2021#
   datebis = #11/07/2021#

Theoretisch funktionieren beide Varianten.
Das Problem mit dem String: Das funktioniert nur, wenn die Windows Spracheinstellungen übereinstimmen.
Sobald die abweichen interpretiert VBA den String anders und der Code führt zu anderen Ergebnissen.
Ganz abgesehen davon, dass die String Verarbeitung langsamer ist.
10 Jahre Access

Josef P.

Juli 23, 2021, 09:51:33 #23 Letzte Bearbeitung: Juli 23, 2021, 09:56:08 von Josef P.
Hallo!
Zitat von: DF6GL am Juli 13, 2021, 15:38:01Me!Tage = DateDiff("d", Format(Me!datevon,"\#mm\dd\yyyy\#")  , Format(Me!datebis,"\#mm\dd\yyyy\#")  )

Welche Aufgabe hat Format in dieser Code-Zeile?

Anm.: CDate("#7/23/2021#") wird einen Laufzeitfehler auslösen. ;-)

LG
Josef

DF6GL

Hallo Josef,

jahhh, wenn Du so fragst:  gar keine vernünftige    :o

Ich habe da wohl eher an ein SQL-Statement denn an VBA-Code gedacht  (oder vielleicht auch gar nicht gedacht    :'(   )   >:(