Abfrage funktioniert nicht aus Makro?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Steffan
****
Beiträge: 125
Registriert: Mi, 21.06.2006 10:07
Wohnort: Dresden

Abfrage funktioniert nicht aus Makro?

Beitrag 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
    pmoegenb
    ********
    Beiträge: 4330
    Registriert: Di, 22.06.2004 12:02
    Wohnort: 71134 Aidlingen
    Kontaktdaten:

    Re: Abfrage funktioniert nicht aus Makro?

    Beitrag 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.
    Gruß

    Peter
    ---------------------------------------------------------------------------
    Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
    Benutzeravatar
    komma4
    ********
    Beiträge: 5332
    Registriert: Mi, 03.05.2006 23:29
    Wohnort: Chon Buri Thailand Asia
    Kontaktdaten:

    Re: Abfrage funktioniert nicht aus Makro?

    Beitrag 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?
    Cheers
    Winfried
    aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
    DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
    Steffan
    ****
    Beiträge: 125
    Registriert: Mi, 21.06.2006 10:07
    Wohnort: Dresden

    Re: Abfrage funktioniert nicht aus Makro?

    Beitrag 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
    Benutzeravatar
    komma4
    ********
    Beiträge: 5332
    Registriert: Mi, 03.05.2006 23:29
    Wohnort: Chon Buri Thailand Asia
    Kontaktdaten:

    Re: Abfrage funktioniert nicht aus Makro?

    Beitrag 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
    Cheers
    Winfried
    aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
    DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
    Steffan
    ****
    Beiträge: 125
    Registriert: Mi, 21.06.2006 10:07
    Wohnort: Dresden

    Re: Abfrage funktioniert nicht aus Makro?

    Beitrag 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
    Antworten