Typunverträglichkeit und einiges mehr

26/05/2014 - 14:50 von Peter Uhlig | Report spam
Liebe Access Gemeinde,

wenn mir jemand nen Tip geben könnte wàre das echt klasse, ich sitze jetzt schon seit gestern dran und kriege es nicht gebacken, vielleicht übersehe ich auch was.

also das ist der Code:
Function XMLin()
' Funktion um die XML tabelle zu beschreiben
Dim strSQL As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim intDNSnr, intID(), k As Integer
Dim Platz, Name, Klasse As String 'Variablen zum Auslesen des SQL
Dim StNr, Tz, Tp, Tt, W1z, W1p, W1t, W1w, W2z, W2p, W2t, W2w, W3z, W3p, W3t, W3w As Double 'Variablen zum Auslesen des SQL
Dim Platz2, Name2, Klasse2 As String 'Variablen zum merken der Daten
Dim StNr2, Tz2, Tp2, Tt2, W1z2, W1p2, W1t2, W1w2, W2z2, W2p2, W2t2, W2w2, W3z2, W3p2, W3t2, W3w2 As Double 'Variablen zum merken der Daten
Dim T, W1, W2, W3, W, Wgew As Double 'Variablen die berechnet werden

'SQL für die Abfrage des XML
strSQL = "SELECT tbl_Daten.StNr, [tbl_Personen]![tpName] & ', ' & [tbl_Personen]![tpVorname] AS Name, tbl_Daten.Kl1, tbl_Zeiten.Lauf, tbl_Zeiten.Tz, tbl_Zeiten.Tp, tbl_Zeiten.Tt, tbl_Zeiten.w1z, tbl_Zeiten.w1p, tbl_Zeiten.w1t, tbl_Zeiten.w1w, tbl_Zeiten.w2z, tbl_Zeiten.w2p, tbl_Zeiten.w2t, tbl_Zeiten.w2w, tbl_Zeiten.w3z, tbl_Zeiten.w3p, tbl_Zeiten.w3t, tbl_Zeiten.w3w, tbl_Daten.IDver, [tbl_Zeiten]![w1w]+[tbl_Zeiten]![w2w]+[tbl_Zeiten]![w3w] AS gew, [tbl_Zeiten]![w1z]+([tbl_Zeiten]![w1p]*3)+([tbl_Zeiten]![w1t]*15)+[tbl_Zeiten]![w2z]+([tbl_Zeiten]![w2p]*3)+([tbl_Zeiten]![w2t]*15)+[tbl_Zeiten]![w3z]+([tbl_Zeiten]![w3p]*3)+([tbl_Zeiten]![w3t]*15) AS su "
strSQL = strSQL & "FROM tbl_Personen INNER JOIN (tbl_Daten INNER JOIN tbl_Zeiten ON tbl_Daten.IDd = tbl_Zeiten.IDd) ON tbl_Personen.tpID = tbl_Daten.IDpers "
strSQL = strSQL & "WHERE (((tbl_Daten.IDver) = 2)) "
strSQL = strSQL & "ORDER BY [tbl_Zeiten]![w1w]+[tbl_Zeiten]![w2w]+[tbl_Zeiten]![w3w] DESC , [tbl_Zeiten]![w1z]+([tbl_Zeiten]![w1p]*3)+([tbl_Zeiten]![w1t]*15)+[tbl_Zeiten]![w2z]+([tbl_Zeiten]![w2p]*3)+([tbl_Zeiten]![w2t]*15)+[tbl_Zeiten]![w3z]+([tbl_Zeiten]![w3p]*3)+([tbl_Zeiten]![w3t]*15); "

Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset, False)
intDNSnr = 0
Do Until rs.EOF
ReDim Preserve intID(intDNSnr)
intID(intDNSnr) = intDNSnr + 1
StNr = rs.Fields(0).Value
Name = rs.Fields(1).Value
Klasse = rs.Fields(2).Value
'Lauf wenn 2 Rennen sind (9PS Slalom und Oberderdingen mit Lotus)
Tz = rs.Fields(4).Value
Tp = rs.Fields(5).Value
Tt = rs.Fields(6).Value
W1z = rs.Fields(7).Value
W1p = rs.Fields(8).Value
W1t = rs.Fields(9).Value
W1w = rs.Fields(10).Value
W2z = rs.Fields(11).Value
W2p = rs.Fields(12).Value
W2t = rs.Fields(13).Value
W2w = rs.Fields(14).Value
W3z = rs.Fields(15).Value
W3p = rs.Fields(16).Value
W3t = rs.Fields(17).Value
W3w = rs.Fields(18).Value
' Daten merken
ReDim Preserve StNr2(intDNSnr)
StNr2(intDNSnr) = StNr
ReDim Preserve Name2(intDNSnr)
Name2(intDNSnr) = Name
ReDim Preserve Klasse2(intDNSnr)
Klasse2(intDNSnr) = Klasse
ReDim Preserve Tz2(intDNSnr)
Tz2(intDNSnr) = Tz
ReDim Preserve Tp2(intDNSnr)
Tp2(intDNSnr) = Tp
ReDim Preserve Tt2(intDNSnr)
Tt2(intDNSnr) = Tt
ReDim Preserve W1z2(intDNSnr)
W1z2(intDNSnr) = W1z
ReDim Preserve W1p2(intDNSnr)
W1p2(intDNSnr) = W1p
ReDim Preserve W1t2(intDNSnr)
W1t2(intDNSnr) = W1t
ReDim Preserve W1w2(intDNSnr)
W1w2(intDNSnr) = W1w
ReDim Preserve W2z2(intDNSnr)
W2z2(intDNSnr) = W2z
ReDim Preserve W2p2(intDNSnr)
W2p2(intDNSnr) = W2p
ReDim Preserve W2t2(intDNSnr)
W2t2(intDNSnr) = W2t
ReDim Preserve W2w2(intDNSnr)
W2w2(intDNSnr) = W2w
ReDim Preserve W3z2(intDNSnr)
W3z2(intDNSnr) = W3z
ReDim Preserve W3p2(intDNSnr)
W3p2(intDNSnr) = W3p
ReDim Preserve W3t2(intDNSnr)
W3t2(intDNSnr) = W3t
ReDim Preserve W3w2(intDNSnr)
W3w2(intDNSnr) = W3w

intDNSnr = intDNSnr + 1
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
strSQL = " "

' Tabelle leeren
DoCmd.SetWarnings False
strSQL = "DELETE * FROM tbl_xml "
DoCmd.RunSQL (strSQL), dbFailOnError
DoCmd.SetWarnings True
strSQL = " "

' Tabelle frisch beschreiben
strSQL = "SELECT tbl_xml.* FROM tbl_xml; "
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
intDNSnr = 0
k = 0
For k = LBound(intID) To UBound(intID)
rs.FindFirst "txml_ID=" & intID(intDNSnr)
rs.AddNew
rs.Fields("txml_ID").Value = intID(intDNSnr)
rs.Fields("Platz").Value = intID(intDNSnr)
rs.Fields("StNr").Value = StNr2(intDNSnr)
rs.Fields("Name1").Value = Name2(intDNSnr)
'rs.Fields("Klasse").Value = Klasse2(intDNSnr)
rs.Fields("Fahrzeug").Value = " "
rs.Fields("Tr1z").Value = Tz2(intDNSnr)
rs.Fields("Tr1p").Value = Tp2(intDNSnr)
rs.Fields("Tr1t").Value = Tt2(intDNSnr)
T = Tz2(intDNSnr) + (Tp2(intDNSnr) * 3) + (Tt2(intDNSnr) * 15)
rs.Fields("Tr1su").Value = T
rs.Fields("Wl1z").Value = W1z2(intDNSnr)
rs.Fields("Wl1p").Value = W1p2(intDNSnr)
rs.Fields("Wl1t").Value = W1t2(intDNSnr)
W1 = W1z2(intDNSnr) + (W1p2(intDNSnr) * 3) + (W1t2(intDNSnr) * 15)
rs.Fields("Wl1su").Value = W1
rs.Fields("Wl2z").Value = W2z(intDNSnr)
rs.Fields("Wl2p").Value = W2p(intDNSnr)
rs.Fields("Wl2t").Value = W2t(intDNSnr)
W2 = W2z2(intDNSnr) + (W2p2(intDNSnr) * 3) + (W2t2(intDNSnr) * 15)
rs.Fields("Wl2su").Value = W2
rs.Fields("Wl3z").Value = W3z(intDNSnr)
rs.Fields("Wl3p").Value = W3p(intDNSnr)
rs.Fields("Wl3t").Value = W3t(intDNSnr)
W3 = W3z2(intDNSnr) + (W3p2(intDNSnr) * 3) + (W3t2(intDNSnr) * 15)
rs.Fields("Wl3su").Value = W3
W = W1 + W2 + W3
rs.Fields("Wlsu").Value = W
Wgew = W1w2(intDNSnr) + W2w2(intDNSnr) '+ W3w2(intDNSnr)
rs.Fields("Wlsuw").Value = Wgew
If Wgew = 0 Then
Else
rs.Fields("Platz").Value = "n.g."
End If
rs.Update
intDNSnr = intDNSnr + 1
Next
rs.Close
Set rs = Nothing
Set db = Nothing
strSQL = " "
End Function

Also oben unter Punkt Daten merken,
kommt der Fehler
Fehler beim Kompilieren
Erwartet Datenfeld

Zeile
ReDim Preserve Klasse2
ReDim Preserve W3w2

Dann kommt noch
Laufzeitfehler '13:
Typen unvertràglich

Zeile
ReDim Preserve StNr2(intDNSnr)

Hat jemand eine Idee?
Es geht einfach darum dass ich mit einer Abfrage eine Tabelle beschreiben möchte

Viele Grüße
Peter
 

Lesen sie die antworten

#1 Peter Uhlig
26/05/2014 - 19:12 | Warnen spam
liebe Gemeinde,

habs gefunden
Dim StNr2, Tz2, W3w2 As Double 'Variablen zum merken der Daten
da fehlen die () und dann noch weiter unten im Code die 2 bei den Variablen

Viele Grüße
Peter

Ähnliche fragen