August 11, 2022, 04:47:57

Neuigkeiten:

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


Datentypen Fehler - Syntaxfehler

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

⏪ vorheriges - nächstes ⏩

virility

Sehr merkwürdig das ganze.

Manchmal taucht überhaupt kein Fehler auf, sondern nur die Meldung "Kein aktueller Datensatz", aber nur durch den Debugger.

Das kann jedoch an den Berechtigungen liegen, ein Makro welches defintiv funktioniert liefert die gleiche Meldung bei mir und bei meiner Chefin läuft es.
Muss bis morgen warten um es bei ihr auszuprobieren.

DF6GL

Hallo,

durch die quick&dirty-Methode mit den globalen Variablen kann das zu diesen Effekten führen, wenn kein vernünftiger Error-Handler in jeder(!) Routine eingebaut ist.   Bei einem nicht behandelten Fehler verlieren die globalen Variablen ihre Werte...

Ich sagte ja eingangs, der ganze Code gehört völlig überarbeitet.


virility

Juli 10, 2012, 10:38:09 #47 Letzte Bearbeitung: Juli 10, 2012, 11:14:28 von virility
Hey.

EDIT 2:
so wie es aussieht, müssen im SQL doch alle Spalten einzeln aufgeführt werden, sonst gibt es Probleme, dass sie dem Formular nicht richtig zugeordnet werden.
So sieht es jetzt aus. Müsste passen, oder?

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 [durchf Station] = '" & ola & "' and [Abge-rechnet]=" & Format(Frage, "\#yyyy-mm-dd\#") & _
" Order by kennzeichen, mietvertrag"

Debug.Print sql
Me.RecordSource = sql

'" & ola & "
'" & frage & "

End Sub


EDIT:

Bekomme jetzt die Fehlermeldung 3021 : Kein aktueller Datensatz

Wie gesagt. Ich schaue morgen mal vom PC der Chefin.

DF6GL

HAllo,

ja, sehe gerade, dass da berechnete Spalten drin sind....

Ansonsten musst Du den ausgedruckten SQL-String dahingehend prüfen, ob für "durchf Station"  und "Abge-rechnet"   je ein Kriterienwert vorhanden ist.  ("ola" und "Frage"). Wenn da plausible Werte übergeben werden, dann gibt es in der Tabelle keine passenden Datensätze zu den Kriterienwerten.

virility

durchf Station und abge-rechnet sind in der Tabelle IMMER eingetragen, falls du das meinst.

durchf Station besagt, welche Station für die Abrechnung gemeint ist und abge-rechnet das Abrechnungsdatum. Immer der 01. der Folgemonats.

Ist für alle Einträge in der Tabelle vorhanden.

In der Abfrage gebe ich ja ein Datum ein, d.h. 01.06.2012 bspw, dann soll er mir für ALLE Stationen (ola) die Einträge raussuchen, bei denen abge-rechnet dem eingegebenen Datum entspricht (hier: 01.06.2012) mit den ganzen SQL Angaben, s.o.

Wie überprüfe ich denn den SQL String richtig? Also ob für jede Abfrage etwas ausgegeben wird?

DF6GL

Hallo,


naja, jetzt wird es etwas langatmig...



Zitat"In der Abfrage gebe ich ja ein Datum ein,..."

Du meinst damit die Input-Box?  EinE "Anfrage" ist ja was anderes..




ZitatWie überprüfe ich denn den SQL String richtig? Also ob für jede Abfrage etwas ausgegeben wird?


Wie vorher gesagt: Mit Debug.Print den SQL-String in das Direktfenster schreiben und überprüfen, ob die Variablenwerte als Kriterium richtig eingesetzt sind.

Du kannst diesen SQL-String kopieren und im Abfrageentwurf im Fenster "SQL-Ansicht" ablegen. Evtl. in die Entwurfsansicht wechseln. Danach auf das Ausrufezeichen klicken, um die Abfrage auszuführen und die gelieferten Daten inspizieren.


virility

Hey.
Ja, entschuldige bitte, bin komplett neu in dieser Materie und irgendwie echt aufgeschmissen :-(

Das Direktfenster gibt mir folgendes aus:

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], [Reportin
g - Abgerechnete Daten].[Tank-Haendler netto] + [Reporting - Abgerechnete Daten].[Tank - netto] AS Kraftstoff FROM [Reporting - Abgerechnete Daten] WHERE [durchf Station] = 'AAHZ20' and [Abge-rechnet]= Order by kennzeichen, mietvertrag


durchf Station AAHZ20 wird gewählt, das ist der erste Eintrag. Das Datum aus der InputBox wird allerdings nicht eingetragen... :-(

virility

Edit:

OK, bei Kritierien fehlt der Verweis auf das eingebene Datum.

Trage ich dort [Bitte Datum eintragen] ein, so fragt er danach und der Report wird erstellt.

Jetzt muss das ganze "nur" noch das Datum aus der 1. Inputbox nehmen.

DF6GL

Hallo,

ja,  dann musst Du eben suchen, warum das so ist....   Die Variable "Frage" muss und darf NUR in einem Standardmodul als

Public Frage As String

deklariert werden.  (Als empfehlenswerte Alternative zur globalen Deklaration  kann die Variable "Frage" auch als Argument bei der Deklaration der Routinen angegeben werden.


Und wie gesagt: setz einen Haltpunkt auf die Zeile   sql = "SELECT [Reporting ....................  und überprüf   , ob in "Frage" (mit dem Mauszeiger draufzeigen) das Datum drinsteht.




Vielleicht ist es besser, Du lädst die Db mal (gezippt und datenreduziert) hier hoch....

virility

So....habe jetzt mal Schrittweise nachgeguckt.

Folgendes Problem tritt ans Tageslicht.

Im 1. Modul wird anstatt "frage" noch das Datum eingetzt. Im 2. Modul "sendmails" NICHT MEHR!

Das Datum wird nicht weitergegeben.

DF6GL

Hallo,


:'(


WO wird "Frage" deklariert?

Poste doch mal den gesamten Code einschliesslich des Modulkopfes.....

virility

ES LÄUFT!!!!!

Ich habe jetzt einfach die SQLDatums Deklaration Public gemacht und anstatt Frage in den Modulen SQLDatum eingetragen.

Fehler behoben und alles läuft wie es soll!

Herzlichen DANK für die Hilfe!!!!

Und wie gesagt. Bist du in Hamburg -> Fühl dich auf ein Bier eingeladen!!!!