Hallo
ich habe ein Problem in einem Programm-Code. Und zwar dient die Funktion zum extrahieren von Daten. Wenn allerdings ein bestimmtes Element gewählt ist, soll zunächst die Globalstrahlung in einer anderen Funktion berrechnet werden. Diese Werte stehen dann in der Tabelle "Daten". Von dort werden sie in eine Abfrage (AEX_(i)) geladen.
Das Problem ist nun, wenn die erste Station abgearbeitet ist, ist noch alles wunderbar. Wenn dann aber die Schleife wieder beginnt, mit dem Löschen der Daten aus der Tabelle "Daten", dann wird automatisch auch alles in der Abfrage "AEX_(i) gelöscht und ausserdem die Werte für Station 2 nicht nur in AEX_2 sondern zusätzlich auch in AEX_1 geschrieben, wo aber eigentlich noch die Werte von Station 1 drin stehen sollen.
Kann mir jemand sagen wie ich das Problem beheben kann? Hab leider noch nicht so viel Ahnung von VBA.
Hier ist nochmal der Code für den entsprechenden Programmteil:
Select Case KlimaElement
Case 4
i = 0
While Not t.EOF
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM [Daten];"
DoCmd.SetWarnings True
i = i + 1
Set t1 = db.OpenRecordset("Daten")
If zielaufl = 1 Then
StaLex = "Standorte Einzelherkunft_Sonnenscheindauer_TGW"
Else
StaLex = "Standorte Einzelherkunft_Sonnenscheindauer_MW"
End If
Set t3 = db.OpenRecordset(StaLex)
stid = t!id
t3.MoveFirst
t3.FindFirst "[Lfd-Nr]=" + Format(stid)
quelltabname = t3!TabName
quellspaltname = t3!FeldName
t3.Close
DoCmd.SetWarnings False
sql = "INSERT INTO Daten (Zeit, Station2) "
sql = sql + "SELECT [" + quelltabname + "].[Datum], [" + quelltabname + "].[" + quellspaltname + "] "
sql = sql + "FROM [" + quelltabname + "] "
If Status = True Then
sql = sql + "IN '" & DatenDBPfad & HomoDBName & "' "
Else
sql = sql + "IN '" & DatenDBPfad & DatenDBName & "' "
End If
sql = sql + "WHERE ((([" + quelltabname + "].[Datum]) Between #"
sql = sql + Format(Month(vondat)) & "/" & Format(Day(vondat)) & "/" & Format(Year(vondat)) & "# AND #"
sql = sql + Format(Month(bisdat)) & "/" & Format(Day(bisdat)) & "/" & Format(Year(bisdat)) & "#)) "
sql = sql + "ORDER BY [" + quelltabname + "].[Datum];"
DoCmd.RunSQL (sql)
DoCmd.SetWarnings True
Call Module_Hauptformular.Rechnung_RG(geo_breite, hoehe, zielaufl)
t1.Close
sql = "SELECT "
Select Case zielaufl 'zieldaten
Case 1 'tagesdaten
sql = sql + "DateValue([Daten].[zeit]) as datum"
Case 2 'monatsdaten
sql = sql + "Dateserial(year([Daten].[Zeit]), month([Daten].[Zeit]),1) as datum"
Case 3 'jahresdaten
sql = sql + "Dateserial(Year([Daten].[Zeit]),1,1) as datum"
End Select
sql = sql + ", " + funktion + "([Daten].[station1]) as daten"
If Anzahl Then sql = sql + ", count([Daten].[station1]) as anz"
sql = sql + " FROM [Daten]"
Select Case zielaufl
Case 1
sql = sql + " GROUP BY DateValue([Daten].[Zeit])"
Case 2
sql = sql + " GROUP BY Dateserial(year([Daten].[Zeit]), month([Daten].[Zeit]),1)"
Case 3
sql = sql + " GROUP BY Year([Daten].[Zeit])"
End Select
sql = sql + ";"
Set qdef = db.CreateQueryDef("AEX_" + Format$(i))
qdef.sql = sql
qdef.Close
FeldName(i) = t!bezeichnung
fortschritt = (i / ii) * 100
Call ändern_wartemeldung(Format$(fortschritt) + " % der Datenausgabe")
t.MoveNext
Wend |