Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

ungewünschtes Parameterabfrage

Begonnen von chrizty687, März 19, 2015, 01:28:29

⏪ vorheriges - nächstes ⏩

chrizty687

Hallo,

ich bin noch recht neu im Gebiet VBA Programmierung. Ich brauche es 2 Mal im Jahr und das nur um Kleinigkeiten zu beseitigen wie hier in dem Fall.

Ein im Modul programmiertes Skript ruft eine Excelliste mit Urlaubsdaten, verarbeitet diese und gibt eine andere aus. Dabei benutzt der etliche Datums die einmal fest deklariert werden und später abgerufen werden. Nur zieht er diesen deklarierten Wert nicht, stattdessen geht ein Fenster auf mit dem Text: Parameterabfrage bitte geben Sie einen Wert ein für XXX.

Es wurde wie folgt geschrieben derzeit.

Deklaration:
Dim kaltag1 As Date
Dim kaltag2 As Date
Dim kaltag3 As Date
Dim kaltag4 As Date
Dim kaltag5 As Date
Dim kaltag6 As Date
Dim kaltag7 As Date
Dim kaltag8 As Date
Dim kaltag9 As Date
Dim kaltag10 As Date
Dim kaltag11 As Date
Dim kaltag12 As Date
Dim kaltag13 As Date
Dim kaltag14 As Date
Dim kaltag15 As Date
Dim kaltag16 As Date
Dim kaltag17 As Date
Dim kaltag18 As Date
Dim kaltag19 As Date
Dim kaltag20 As Date
Dim kaltag21 As Date
Dim kaltag22 As Date
Dim kaltag23 As Date
Dim kaltag24 As Date
Dim kaltag25 As Date
Dim kaltag26 As Date
Dim kaltag27 As Date
Dim kaltag28 As Date
Dim kaltag29 As Date
Dim kaltag30 As Date
Dim kaltag31 As Date
Dim kaldatum1 As String
Dim kaldatum2 As String
Dim kaldatum3 As String
Dim kaldatum4 As String
Dim kaldatum5 As String
Dim kaldatum6 As String
Dim kaldatum7 As String
Dim kaldatum8 As String
Dim kaldatum9 As String
Dim kaldatum10 As String
Dim kaldatum11 As String
Dim kaldatum12 As String
Dim kaldatum13 As String
Dim kaldatum14 As String
Dim kaldatum15 As String
Dim kaldatum16 As String
Dim kaldatum17 As String
Dim kaldatum18 As String
Dim kaldatum19 As String
Dim kaldatum20 As String
Dim kaldatum21 As String
Dim kaldatum22 As String
Dim kaldatum23 As String
Dim kaldatum24 As String
Dim kaldatum25 As String
Dim kaldatum26 As String
Dim kaldatum27 As String
Dim kaldatum28 As String
Dim kaldatum29 As String
Dim kaldatum30 As String
Dim kaldatum31 As String


Wertzuweisung:
kaltag1 = "01.03.2015"
kaltag2 = "02.03.2015"
kaltag3 = "03.03.2015"
kaltag4 = "04.03.2015"
kaltag5 = "05.03.2015"
kaltag6 = "06.03.2015"
kaltag7 = "07.03.2015"
kaltag8 = "08.03.2015"
kaltag9 = "09.03.2015"
kaltag10 = "10.03.2015"
kaltag11 = "11.03.2015"
kaltag12 = "12.03.2015"
kaltag13 = "13.03.2015"
kaltag14 = "14.03.2015"
kaltag15 = "15.03.2015"
kaltag16 = "16.03.2015"
kaltag17 = "17.03.2015"
kaltag18 = "18.03.2015"
kaltag19 = "19.03.2015"
kaltag20 = "20.03.2015"
kaltag21 = "21.03.2015"
kaltag22 = "22.03.2015"
kaltag23 = "23.03.2015"
kaltag24 = "24.03.2015"
kaltag25 = "25.03.2015"
kaltag26 = "26.03.2015"
kaltag27 = "27.03.2015"
kaltag28 = "28.03.2015"
kaltag29 = "29.03.2015"
kaltag30 = "30.03.2015"
kaltag31 = "31.03.2015"

'Die Kalendertage werden von Datum zu Text deklariert
kaldatum1 = Format$(kaltag1, "\#mm\/dd\/yyyy\#")
kaldatum2 = Format$(kaltag2, "\#mm\/dd\/yyyy\#")
kaldatum3 = Format$(kaltag3, "\#mm\/dd\/yyyy\#")
kaldatum4 = Format$(kaltag4, "\#mm\/dd\/yyyy\#")
kaldatum5 = Format$(kaltag5, "\#mm\/dd\/yyyy\#")
kaldatum6 = Format$(kaltag6, "\#mm\/dd\/yyyy\#")
kaldatum7 = Format$(kaltag7, "\#mm\/dd\/yyyy\#")
kaldatum8 = Format$(kaltag8, "\#mm\/dd\/yyyy\#")
kaldatum9 = Format$(kaltag9, "\#mm\/dd\/yyyy\#")
kaldatum10 = Format$(kaltag10, "\#mm\/dd\/yyyy\#")
kaldatum11 = Format$(kaltag11, "\#mm\/dd\/yyyy\#")
kaldatum12 = Format$(kaltag12, "\#mm\/dd\/yyyy\#")
kaldatum13 = Format$(kaltag13, "\#mm\/dd\/yyyy\#")
kaldatum14 = Format$(kaltag14, "\#mm\/dd\/yyyy\#")
kaldatum15 = Format$(kaltag15, "\#mm\/dd\/yyyy\#")
kaldatum16 = Format$(kaltag16, "\#mm\/dd\/yyyy\#")
kaldatum17 = Format$(kaltag17, "\#mm\/dd\/yyyy\#")
kaldatum18 = Format$(kaltag18, "\#mm\/dd\/yyyy\#")
kaldatum19 = Format$(kaltag19, "\#mm\/dd\/yyyy\#")
kaldatum20 = Format$(kaltag20, "\#mm\/dd\/yyyy\#")
kaldatum21 = Format$(kaltag21, "\#mm\/dd\/yyyy\#")
kaldatum22 = Format$(kaltag22, "\#mm\/dd\/yyyy\#")
kaldatum23 = Format$(kaltag23, "\#mm\/dd\/yyyy\#")
kaldatum24 = Format$(kaltag24, "\#mm\/dd\/yyyy\#")
kaldatum25 = Format$(kaltag25, "\#mm\/dd\/yyyy\#")
kaldatum26 = Format$(kaltag26, "\#mm\/dd\/yyyy\#")
kaldatum27 = Format$(kaltag27, "\#mm\/dd\/yyyy\#")
kaldatum28 = Format$(kaltag28, "\#mm\/dd\/yyyy\#")
kaldatum29 = Format$(kaltag29, "\#mm\/dd\/yyyy\#")
kaldatum30 = Format$(kaltag30, "\#mm\/dd\/yyyy\#")
kaldatum31 = Format$(kaltag31, "\#mm\/dd\/yyyy\#")


Abruf:
  SQL = " UPDATE DISTINCTROW tblkugplan1 "
  SQL = SQL & " SET tblkugplan1.a1dat = kaldatum1"
  SQL = SQL & " WHERE tblkugplan1.a1 > 0 ;  "
  DoCmd.RunSQL (SQL)
  SQL = " UPDATE DISTINCTROW tblkugplan1 "
  SQL = SQL & " SET tblkugplan1.a2dat = kaldatum2"
  SQL = SQL & " WHERE tblkugplan1.a2 > 0 ;  "
  DoCmd.RunSQL (SQL)



Würde mich freuen wenn mich jemand versteht, weil ich sicherlich nicht in der Fachsprache alles erklärt habe und mir weiterhelfen kann :)

MaggieMay

Hallo,

der Fehler ist, dass die Variable nicht in den Code eingebettet werden darf, sondern damit verkettet werden muss, damit der Wert und nicht der Name übergeben wird. Dabei ist noch zu beachten, dass Datumsfelder einer speziellen Formatierung bedürfen.

Der viel größere Fehler scheint aber im Datenmodell zu liegen...
Freundliche Grüße
MaggieMay

MaggieMay

Hallo,

wenn das Datenmodell nicht zur Diskussion steht, so kannst du die Sache wenigstens vereinfachen, indem du auf die ganzen Variablen und Zuweisungen verzichtest und das Update in einer Schleife ausführst.
Sub SetzeDatum()
On Error GoTo err_proc
    Dim i, vJahr, vMonat, strSQL
    Dim db As DAO.Database
    vJahr = 2015
    vMonat = 3
    Set db = CurrentDB
    For i = 1 To 31
        strSQL = "UPDATE tblkugplan1 " & _
                      "SET tblkugplan1.a" & i & "dat = " & CLng(DateSerial(vJahr, vMonat, i)) & " " & _
                      "WHERE tblkugplan1.a" & i & " > 0 ; "
        db.Execute strSQL, dbFailOnError
    Next i
end_proc:
    Set db = Nothing
    Exit Sub
err_proc:
    MsgBox Err.Description, , Err.Number
    Resume end_proc
End Sub
Freundliche Grüße
MaggieMay