❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Unterschiede bei makros (Mysql ODBC <> Nativ)

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Unterschiede bei makros (Mysql ODBC <> Nativ)

Beitrag von MartinS » Mi 24. Feb 2016, 10:30

hiho,

nachdem ich auf meiner windowskiste wieder zugriff auf meine MySQL datenbank habe funktionieren einige Makros nicht mehr.

Vorher (und auf meiner Linux-Kiste) benutze ich die MySQL (Nativ)-Verbindung,
jetzt den ODBC (unicode).
Folgender COde funktioniert nicht mehr:

Code: Alles auswählen

	oVerbindung = oDatenquelle.ActiveConnection()
	oSQL_Anweisung = oVerbindung.createStatement()
	stSql = "UPDATE ""Filter_Bericht"" SET ""BE_Kombi"" = '"+oFeld.GetCurrentValue()+"' WHERE ""ID"" = TRUE"
	oSQL_Anweisung.executeUpdate(stSql)
	oKombiFeld.refresh
Ausschnitt aus nem Makro für ne Filtertabelle.
Der generierte SQL befehl ist Falsch, wahrscheinlich irgendwas mit den Hochkommas.

Wie bekomm ich das wieder zum laufen, ohne alle Makros zu ändern?
Irgendwelche einstellungen bei dem Datenabank-connector?

TIA

MartinS

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Unterschiede bei makros (Mysql ODBC <> Nativ)

Beitrag von gogo » Mi 24. Feb 2016, 11:15

sollte das mit der konfig nicht funktionieren:

Die doppelten Hockommas z.B.: "BE_Kombi" sind in SQL für Strings reserviert, nur die HSQLDB braucht sie u.U. für die Feldnamen.
MySQL verwendet für Feldbezeichner immer Backticks! `BE_Kombi`
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Re: Unterschiede bei makros (Mysql ODBC <> Nativ)

Beitrag von MartinS » Mi 24. Feb 2016, 11:26

nikki hat geschrieben: Du weißt aber schon, dass Du zur Konfiguration des ODBC-Treibers die Datei odbcad32.exe aus dem Verzeichnis C:\Windows\SysWOW64 (32-bit) verwenden musst, anstatt aus dem Verzeichnis C:\Windows\System32 (64-bit)
nikki hat geschrieben: Du weißt aber schon, dass Du zur Konfiguration des ODBC-Treibers die Datei odbcad32.exe aus dem Verzeichnis C:\Windows\SysWOW64 (32-bit) verwenden musst, anstatt aus dem Verzeichnis C:\Windows\System32 (64-bit)
Bis jetzt nicht gewusst , aber ganz spontan die richtige benutzt.
(Die wird ja auch aus libreoffice aufgerufen....)
gogo hat geschrieben:Die doppelten Hockommas z.B.: "BE_Kombi" sind in SQL für Strings reserviert, nur die HSQLDB braucht sie u.U. für die Feldnamen.
MySQL verwendet für Feldbezeichner immer Backticks! `BE_Kombi`
OK, also alle Makros ändern.
Nur lustig das es unter Linux läuft mit dem Connector dort.

MartinS

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Unterschiede bei makros (Mysql ODBC <> Nativ)

Beitrag von RobertG » Mi 24. Feb 2016, 15:46

Hallo MartinS,

soweit ich das in Erinnerung habe funktioniert das Maskieren mit ` sowohl nativ als auch mit anderen Verbindungen. Aus dem Handbuch:

Code: Alles auswählen

stSQL = "SELECT ""Feld"" FROM ""Tabelle"""
wird zu

Code: Alles auswählen

stSql = "SELECT `Feld` FROM `Datenbank`.`Tabelle`"
Mach' ein einfaches Suchen- und Ersetzen: "" wird zu `

Der Datenbankname wird wohl nicht unbedingt nötig sein, damit auf die Tabelle zugegriffen werden kann.

... und da Du gerade auf eine Filtertabelle zugreifst: So ein Filter wird von allen anderen Nutzern auch beschrieben, wenn es sich nicht um eine temporäre Tabelle handelt. Wenn also mehrere Benutzer auf die Datenbank zugreifen hast Du ein Problem. Auch dazu steht eine Lösung über die Verbindungsnummer im neuesten Handbuch.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Re: Unterschiede bei makros (Mysql ODBC <> Nativ)

Beitrag von MartinS » Mi 24. Feb 2016, 18:34

RobertG hat geschrieben:Hallo MartinS,

soweit ich das in Erinnerung habe funktioniert das Maskieren mit ` sowohl nativ als auch mit anderen Verbindungen. Aus dem Handbuch:

Code: Alles auswählen

stSQL = "SELECT ""Feld"" FROM ""Tabelle"""
wird zu

Code: Alles auswählen

stSql = "SELECT `Feld` FROM `Datenbank`.`Tabelle`"
Mach' ein einfaches Suchen- und Ersetzen: "" wird zu `

Der Datenbankname wird wohl nicht unbedingt nötig sein, damit auf die Tabelle zugegriffen werden kann.
Jojo, das ganze Elend kommt halt daher: Ich entwickel meine Datenbank unter Linux zuhause...und auf dem Werkstattrechner muss ich zwingend Windows einsetzen".
Dort wird die eigentlich nicht groß produktiv eingesetzt, nur mal um alsemal was nachzuschlagen..
(aufjedenfall stolpert mann über lustige Probleme)

Ich werd das unter Linux ändern und schauen das ich das gleich gehalten bekomme...

was mir noch aufgefallen ist:
Ich hab in einigen Formularen ein Feld das mir eine Nummer über MAX( "A_Nr" ) anzeigt.
ist ja evtl. gleiches Problem wie vor, aber unter windows bringt das nicht mal ne Fehlermeldung, das Feld bleibt einfach leer.

RobertG hat geschrieben: ... und da Du gerade auf eine Filtertabelle zugreifst: So ein Filter wird von allen anderen Nutzern auch beschrieben, wenn es sich nicht um eine temporäre Tabelle handelt. Wenn also mehrere Benutzer auf die Datenbank zugreifen hast Du ein Problem. Auch dazu steht eine Lösung über die Verbindungsnummer im neuesten Handbuch.
Danke für den Hinweis.
z.Zt. ist das noch kein Problem, aber ich werds mir anschauen.

Danke für die Hilfen,


MartinS

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Unterschiede bei makros (Mysql ODBC <> Nativ)

Beitrag von RobertG » Mi 24. Feb 2016, 19:00

Hallo MarinS,
MartinS hat geschrieben: was mir noch aufgefallen ist:
Ich hab in einigen Formularen ein Feld das mir eine Nummer über MAX( "A_Nr" ) anzeigt.
ist ja evtl. gleiches Problem wie vor, aber unter windows bringt das nicht mal ne Fehlermeldung, das Feld bleibt einfach leer.
Die Formulare basieren auf einer Abfrage? Dann wäre es eventuell sinnvoll, solch einer Funktion einen Alias zuzuweisen. Beim Zusammenspiel Base - ReportBuilder hilft so etwas auch hin und wieder.

Anführungszeichen zum Maskieren von Feldern in Abfragen werden in der Regel anstandslos von der GUI an MySQL weitergeleitet. Ich habe das gerade einmal mit JDBC-Kontakt überprüft. Klappt sowohl mit ` als auch mit ".

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

MartinS
Beiträge: 41
Registriert: So 27. Jan 2013, 21:58

Re: Unterschiede bei makros (Mysql ODBC <> Nativ)

Beitrag von MartinS » Do 25. Feb 2016, 09:27

RobertG hat geschrieben: Die Formulare basieren auf einer Abfrage? Dann wäre es eventuell sinnvoll, solch einer Funktion einen Alias zuzuweisen. Beim Zusammenspiel Base - ReportBuilder hilft so etwas auch hin und wieder.
Ah, danke. Das war der Trick. Mit nem Alias klappt jetzt alles.

MartinS


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten