Neuigkeiten:

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

Mobiles Hauptmenü

Datentypen Fehler - Syntaxfehler

Begonnen von virility, Juli 09, 2012, 11:16:41

⏪ vorheriges - nächstes ⏩

virility

#30
hab gerade erst deine längere Antwort gelesen...

Da stand NIE Text! Da stand die ganze Zeit als Felddatentyp DATUM/UHRZEIT !!!

EDIT:
ich dachte er würde durch den SQL Datumssyntax das Datum akzeptieren...Habs wieder raus gemacht.

DF6GL

Na, dann ist diese Stringbehandung des Datums völliger Quatsch und grottenfalsch und der Datentyp richtig....


virility

naja, aber erst dadurch hat es überhaupt angefangen zu funktionieren ?!

jetzt muss ich im bericht noch das Datum irgendwie ändern. Da spinnt er nämlich noch rum

DF6GL

HAllo,

"naja, aber erst dadurch hat es überhaupt angefangen zu funktionieren ?!"

das ist eher ein Trugschluss


"jetzt muss ich im bericht noch das Datum irgendwie ändern. Da spinnt er nämlich noch rum"

bedarf einer näheren Erläuterung

virility

#34
Ok...Moment...Langsam wird es unübersichtlich.

Hier nochmal:

Modul 3 wird als erstes ausgeführt:

Sub send_repots()


Dim frage  As String

frage = InputBox("Bitte geben Sie das Datum ein", "Abfrage", , 200, 200)

If frage = "" Then
MsgBox "Fehler!, Eingabe Datum ist Notwendig", vbCritical
Exit Sub
End If

Dim db As Database
Dim rs As Recordset
Dim sql As String
Dim SQLDatum As String
Set db = CurrentDb()

SQLDatum = Format(frage, "\#yyyy\-mm\-dd\#")


sql = "UPDATE daten SET daten.status = Null"
db.Execute (sql)

sql = "UPDATE daten SET daten.status = 'A' WHERE lettercode in (Select distinct [durchf station]  from [Reporting - Abgerechnete Daten] where [Abge-rechnet] =" & SQLDatum & ")"
db.Execute sql, dbFailOnError

Call Modul1.sendmails(frage)

Set db = Nothing

End Sub


Das läuft Fehlerfrei durch.

Es wird Modul1.sendmails(frage) aufgerufen.

Sieht so aus:

Sub sendmails(mon1 As String)





'Report erstellen

Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim sql As String, telefon As String, mon As String
Dim strEmailTo As String
Dim strSubject As String
Dim strMsgTxt As String
Dim strAttachment As String, strAttachment1 As String, strAttachment2 As String, strAttachment3 As String


'mon = InputBox("Bitte geben Sie den Monat ein", "Abfrage", , 200, 200)
'If (mon = "") Then
'    Exit Sub
'End If

mon = mon1

Set db = CurrentDb
Set rs = db.OpenRecordset("Select * from europcar where status = 'A'", dbOpenSnapshot)

'If DirExists("D:\tempo\") = False Then

'MkDir ("D:\tempo\")
     

'End If


While Not rs.EOF

 
DoCmd.OutputTo acOutputReport, "fax stationen - monat", acFormatRTF, "C:\tempo\" & rs!Lettercode & ".rtf", False



strEmailTo = rs!fax
strSubject = "Test: " & mon & " Satellitenstation: " & rs!Lettercode
strMsgTxt = "Sehr geehrte Damen und Herren," & Chr(13) _
& EMAILTEXT


'strAttachment = "d:\TEST\sat\telefax.rtf"
'strAttachment1 = "d:\TEST\sat\" & rs!lettercode & ".rtf"

' MsgBox strAttachment1
     


Call Modul2.FnSafeSendEmail(strEmailTo, strSubject, strMsgTxt, "d:\tempo\" & rs!Lettercode & ".rtf")



rs.MoveNext

Wend
Exit Sub
rs.Close
Set rs = Nothing
Set db = Nothing





End Sub



Hier ist ja ein Verweis auf den Bericht der im Moment wie folgt aussieht:

Private Sub Report_Open(Cancel As Integer)

Dim sql As String

sql = "SELECT [Reporting - Abgerechnete Daten].Region, [Reporting - Abgerechnete Daten].[durchf Station]," & _
"[Reporting - Abgerechnete Daten].ART_II , [Reporting - Abgerechnete Daten].Mietvertrag, [Reporting - Abgerechnete Daten].Kennzeichen," & _
"format([Reporting - Abgerechnete Daten].Datum,'dd.mm.yy') as Datum , [Reporting - Abgerechnete Daten].HAENDLER_NAME, [Reporting - Abgerechnete Daten].[Handling-Fee]," & _
"[Reporting - Abgerechnete Daten].Service , [Reporting - Abgerechnete Daten].Distanz, [Reporting - Abgerechnete Daten].[Überführungs-pauschalen]," & _
"[Reporting - Abgerechnete Daten].Tank , [Reporting - Abgerechnete Daten].[Tank - netto], [Reporting - Abgerechnete Daten].[Tank-Haendler]," & _
"[Reporting - Abgerechnete Daten].[Tank-Haendler netto] , [Reporting - Abgerechnete Daten].Wäsche, [Reporting - Abgerechnete Daten].[Wäsche - netto], [Reporting - Abgerechnete Daten].[sonst Kosten], [Reporting - Abgerechnete Daten].[Abge-rechnet], [Reporting - Abgerechnete Daten].Gesamt," & _
"[Reporting - Abgerechnete Daten].[Versicherung], [Reporting - Abgerechnete Daten].[Tank-Haendler netto] + [Reporting - Abgerechnete Daten].[Tank - netto] AS Kraftstoff" & _
" FROM [Reporting - Abgerechnete Daten]" & _
" WHERE [Reporting - Abgerechnete Daten].[durchf Station] = '" & ola & "' and [Reporting - Abgerechnete Daten].[Abge-rechnet]=" & Format(mon, "\#yyyy-mm-dd\#") & _
" Order by kennzeichen, mietvertrag"

Me.RecordSource = sql

'" & ola & "
'" & mon & "

End Sub


UND HIER IST EIN FEHLER:

Syntaxfehler (fehlender Operator) in Abfrageausdruck '[Reporting - Abgerechnete  Daten].[durchf Stationen]=" and [Reporting - Abgerechnete Daten].[Abge-rechnet]='.

DF6GL

Hallo,


Public Frage as String   'in Modul1

.
.



Call Modul1.sendmails()
.
.
Sub sendmails()
.
.


strSubject = "Test: " & frage & " Satellitenstation: " & rs!Lettercode



" WHERE [Reporting - Abgerechnete Daten].[durchf Station] = '" & ola & "' and [Reporting - Abgerechnete Daten].[Abge-rechnet]=" & Format(frage, "\#yyyy-mm-dd\#") & _
" Order by kennzeichen, mietvertrag"


virility

#36
in modul 3 oder 1?


Als erstes wir 3 aufgerufen, dann 1.



Ich hab das richtig verstanden, dass ich PUBLIC FRAGE AS STRING in den Deklarationen von Modul 1 eintragen soll?



EDIT:
bekomme weiterhin den gleichen syntaxfehler

DF6GL

#37
Hallo,

ja, richtig verstanden.

Wo wird "ola" deklariert und initialisiert?


PS: noch ein (2)  Tipp(s):  zur Untersuchung solcher Fehlersituationen einen Haltepunkt an geeigneter Codestelle setzen und während dem manuellen Durchfahren des Codes die jeweiligen Variablen-Inhalte auf Plausibilität testen.

Bei Fehlern in zusammengebauten SQl-Strings diesen erst mit Debug.Print in das Direktfenster schreiben, um die Syntax und die eingesetzten Variablenwerte zu testen.

virility

Hey!
Danke. Fühl dich auf ein Bier eingeladen, wenn du in Hamburg bist :-)

debug.print gibt aus, dass der ganze SQL Befehl falsch ist, im Direktfenster wird er genauso dargestellt wie er oben steht.

der SQL Befehl sagt ja in meinem Verständnis aus,

SQL = SELECT  'also Auswahl
[Reporting - abgerechnete Daten].[....] 'VON welcher Tabelle, welche Spalte.

Da sich aber ALLE Spalten in der gleichen Tabelle befinden, könnte man das ganze nicht übersichtlicher gestalten, wenn man
sagt: SELECT * (es sind eh alle Spalten) FROM Reporting - abgerechnete Daten WHERE .....

???

Das wäre doch einfacher. Geht das? Kann mir einer sagen wie? ;-)

DF6GL

Hallo,


Was heißt denn: "der ganze SQL Befehl falsch ist"



"Geht das?"

Du hast die Frage doch selber beantwortet...



sql = "SELECT * FROM [Reporting - Abgerechnete Daten]" & _
" WHERE [durchf Station] = '" & ola & "' and [Abge-rechnet]=" & Format(mon, "\#yyyy-mm-dd\#") & _
" Order by kennzeichen, mietvertrag"

Das beantwortet aber nicht die Frage , was in ola steht und woher das kommt.

virility

'OLA' ist in den Deklarationen von Modul 1 festgelegt:

Global ola As String, mon As String


in der Function massenfax() 'hat mit dem jetzigen Makro eigentlich nichts zu tun, steht folgendes:

ola = rs!Lettercode


Bei Sub sendmails() taucht OLA gar nicht auf.


Schreibe ich es Testhalber mal dazu, dann bekomme ich den Fehler:

Syntaxfehler (fehlender Operator) in Abfrageausdruck '[durchf Station]="AAHZ20' and [Abge-rechnet]='

AAHZ20 ist in dem Fall der erste eintrag in der Spalte "Lettercode" der Tabelle Daten.

Debug.print gibt folgendes aus:

SELECT * FROM [Reporting - Abgerechnete Daten] WHERE [durchf Station] = 'AAHZ20' and [Abge-rechnet]= Order by kennzeichen, mietvertrag


DF6GL

Hallo,

ja, "mon" muss durch  "frage" ersetzt werden (vorausgesetzt, die diesbezüglichen Änderungen sind durchgeführt)

sql = "SELECT * FROM [Reporting - Abgerechnete Daten]" & _
" WHERE [durchf Station] = '" & ola & "' and [Abge-rechnet]=" & Format(frage, "\#yyyy-mm-dd\#") & _
" Order by kennzeichen, mietvertrag"


virility

Das habe ich schon gesehen und korrigiert. Ausgabe und Fehlermeldung bleiben die gleichen.  ???

DF6GL

Hallo,


hast Du die Funktionen auch von "ganz vorn" ablaufen lassen?  Soll heißen die Sub   send_repots()    aufgerufen?



virility

Ja, hab es komplett neu gestartet. Der Fehler kommt immer wieder.

Der Dubber markiert mir folgende Zeile:

DoCmd.OutputTo acOutputReport, "fax Stationen - Monat", acFormatRTF, "D:\tempo\" & ola & ".rtf", False


Fax Stationen - Monat hat ja den Inhalt:

Private Sub Report_Open(Cancel As Integer)

Dim sql As String


sql = "SELECT * FROM [Reporting - Abgerechnete Daten]" & _
" WHERE [durchf Station] = '" & ola & "' and [Abge-rechnet]=" & Format(Frage, "\#yyyy-mm-dd\#") & _
" Order by kennzeichen, mietvertrag"

Debug.Print sql
Me.RecordSource = sql

'" & ola & "
'" & mon & "

End Sub


Fehlermeldung wie weiter vorne....mit dem Syntax