Seite 1 von 1

Abfrage funktioniert nicht aus Makro?

Verfasst: Di, 07.10.2008 10:46
von Steffan
Hallo zusammen,

folgendes Problem habe ich schonmal im Basic-Forum gepostet, mich aber dort darauf konzentriert, dass im Einzeldurchlauf des Makros (F8) ein Fehler in einer leeren Zeile auftaucht. Dies ist mir mittlerweile in verschiedenen Makros passiert und die Fehlermeldung bezog sich immer auf die kommende Zeile (ein Bug in OO?).
Aber damit kriege ich das Abfrageproblem nicht gelöst. Der Code

Code: Alles auswählen

private sub loadContactFromDB
	if oConn is nothing then makeConnecion
	iSelAdrID=getSelected(true)
	
	sQuery="SELECT company1, family_name FROM addresses WHERE address_ID=" & cstr(iSelAdrID)

	oStat2=oConn.CreateStatement()
	oRes2=oStat2.executeQuery(sQuerry)
	While oRes.Next
		sAdr1=oRes.Columns(1).getString
		sAdr2=oRes.Columns(2).getString
		sAdr=iif(sAdr1<>"", sAdr1 & "; ","")
		sAdr=sAdr & sAdr2
	wend
	
	oDia.getControl("txtTo").Text=sAdr
end Sub
hängt vor der Zeile [

Code: Alles auswählen

Stat2=oConn.CreateStatement()
mit einer SQLException : [Microsoft] [ODBC Driver Manager] Ungültige Zeichenfolgen- oder Pufferlänge.

Die (für mich) offensichtliche Dinge habe ich schon ausgeschlossen:
  • Verbindung zur DB steht
  • Variable 'iSelAdrID' hat einen gültigen Wert
    [[]es gibt das gewünschte Ergebnis, wenn ich den Text von 'sQuery' kopiere und damit eine Abfrage in Base auf die Datenbank erstelle[
    Hat jemand von Euch eine Idee oder einen Tip?
    Steffan

    Re: Abfrage funktioniert nicht aus Makro?

    Verfasst: Di, 07.10.2008 11:15
    von pmoegenb
    Hallo Steffan,

    die Syntax des SQL-Befehls kann so nicht gehen. Du kannst Inhalte von Variablen nur als Parameter übergeben.

    Beispiel:

    Code: Alles auswählen

    SELECT company1, family_name FROM addresses WHERE address_ID=:Param
    Wie Du allerdings in Basic den Parameter übergeben kannst, weiß ich nicht. In Basic kenn ich mich nicht aus. Wenn Du diesen SQL-Befehl als Abfrage ausführst, öffnet sich ein Fenster in dem der Inhalt von :Param abgefragt wird.

    Re: Abfrage funktioniert nicht aus Makro?

    Verfasst: Di, 07.10.2008 11:28
    von komma4
    Doch, Peter, das geht:

    Code: Alles auswählen

    sQuery = "SELECT company1, family_name FROM addresses WHERE address_ID=" & cstr(iSelAdrID)
    Die Fehlermeldung deutet eher auf einen nicht korrekten ODBC-Treiber hin.

    Steffan: kannst Du den Treiber wechseln? Updaten?

    Re: Abfrage funktioniert nicht aus Makro?

    Verfasst: Di, 07.10.2008 13:58
    von Steffan
    Hallo,

    erst mal vielen Dank für Eure Antworten:

    @pmoegenb:
    Wie gesagt die Variable übergebe ich vorher im Makrocode sodass mein Abbfragestring dann z,B.

    Code: Alles auswählen

    sQuery="SELECT company1, family_name FROM addresses WHERE address_ID=211"
    heisst, was eigentlich klappt.

    @komma4:
    Das ganze funktioniert an anderen Stellen im Projekt reibungslos (auch für die gleiche DB und Tabelle), also ich denke am ODBC-Tereiber kann es eigentlich nicht liegen.

    Immer noch ratlos,
    Steffan

    Re: Abfrage funktioniert nicht aus Makro?

    Verfasst: Di, 07.10.2008 14:02
    von komma4
    Steffan hat geschrieben:mit einer SQLException : [Microsoft] [ODBC Driver Manager] Ungültige Zeichenfolgen- oder Pufferlänge.[/[uote]
    Das mag an anderer Stelle geklappt haben, mit diesem Datensatz hat der Treiber Probleme. Ergo: Treiber wechseln

    Re: Abfrage funktioniert nicht aus Makro?

    Verfasst: Di, 07.10.2008 15:58
    von Steffan
    Hallo komma4,

    habe gerade von mySQL-ODBC-Treiber Version 3.5.1 auf Version 5.1 aktualisiert: Das Ergebnis ist das gleiche: Gleiche Fehlermeldung an der selben Stelle im Code.

    Steffan