![]() |
Datenbank: FIREBIRD • Version: 2.5 • Zugriff über: ZEOS / UIB
ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo DELPHI-Fans,
In einem DataModul habe ich ZEOS V7.0.0 dev Komponenten und UIB 2.5 Komponenten plaziert um auf eine Firebird-datenbank zuzugreifen. Während die UIB ein korrektes Ergebnis liefert, liefert die ZEOS ein leeres Ergebnis zurück. Hiermal der CODE
Delphi-Quellcode:
Das Feld EditBenutzer, beinhaltet den Suchbegriff für das SQL Statement.
{ Jetzt die eingegebenen Daten validieren }
with datam_DIXI do begin // SQL_TEXT := 'SELECT * from tbl_user WHERE tbl_user.USERNAME = '+QuotedStr('twenige'); // liefert richtiges Ergebnis SQL_TEXT := 'SELECT * from tbl_user WHERE tbl_user.USERNAME = :sBENUTZERNAME'; zQUeryUser.SQL.Clear; zQueryUser.SQL.Text := SQL_TEXT; zQueryUser.ParamByName('sBENUTZERNAME').AsString := EditBenutzer.Text; zQueryUser.Active := true; Showmessage(zQueryUser.FieldValues['VORNAME']); // UIBDataSet1.SQL.Clear; // UIBDataSet1.SQL.Text := SQL_TEXT; // //UIBDataSet1.ParamCheck := true; // UIBDataSet1.Params.ByNameAsString['sBENUTZERNAME'] := EditBenutzer.Text; // UIBDataSet1.Active := true; // SHowmessage(UIBDataSet1.FieldValues['VORNAME']); end; Warum funktioniert die Abfrage mit ZEOS nicht ? (siehe Fehlermeldung im angehängten Bild) |
AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse
Versuch mal
Delphi-Quellcode:
zQueryUser.ParamByName('sBENUTZERNAME').Value := Trim(EditBenutzer.Text);
|
AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse
Hallo...
Zitat:
versuche mal
Delphi-Quellcode:
...erklären warum VORNAME null ist kann ich auch nicht sagen. :roll:
Showmessage(zQueryUser.FieldByName('VORNAME').AsString);
|
AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo mkinzler,
vielen dank für den Tip, hat aber auch nichts gebracht. Das Ergebnis ist leer. Wenn ich den ersten SQL_String nehme: // SQL_TEXT := 'SELECT * from tbl_user WHERE tbl_user.USERNAME = '+QuotedStr('twenige'); // liefert richtiges Ergebnis bekomme ich einen Datensatz zrückgeliefert und kann mir anhand des Benutzernamens (twenige) auch den entsprechenden Vornamen anzeigen. Aber mit den Params funktionierts bei Zeos nicht. Anmerkung: bei ZEOS 7 gibt es eine Option im Objektinspektor, die es bei früheren anscheinend nicht gab. Veilleicht hat es damit was zu tun. (Siehe Bild) / ParamChar. |
AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse
Hallo haentschman,
das korrekte Ergebnis wäre genau 1 Datensatz. Gesucht wird anhand des Benutzernamens (hier z.B. twenige). Wenn der DS mit dem Benutzernamen gefunden wird, soll er mir dessen Vornamen anzeigen, welcher Bestandteil des gesamten Datensatzes ist (z.B. Thomas) |
AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse
Zitat:
![]() |
AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse
Hallo haentschman,
also im Forum konnte ich erstmal nachlesen wofür dieses ParamChar gedacht ist. Default steht dieses Char auf :, man kann aber anscheinend auch ein andres Zeichen benutzen, um eine Paramtervariable zu definieren. Folgendes habe ich probiert: ParamChar : auf ; gesetzt und im Code im SQL Statement dann ;Benutzername gesetzt. Liefe ohne Fehler durch. Am Resultat hat es aber nichts geändert, auch diese Variante hat keinen datensatz zurückgeliefert. Also ParamChar dient dazu mit dem gesetzten Char Zeichen eine Parametervariable zu identifizieren. So habe ich es rausgelesen, wobei mein Englisch auch nicht unbedingt das beste ist. Hier mal ein Auszug von : mdaens (Zeos Projektmanager) : So setting paramcheck to true solved the problem. But what if you really want to use parameters somewhere else in the script, then? Well, unfortunately, there's no solution in zeoslib 6.6. BUT, I just added a new property to TZSQLProcessor and TZQuery in zeoslib 7. This property is called ParamChar and defaults to ':'. Don't think I need to say more. Now you can define the character to indicate a parameter yourself. Within reasonable limits, of course. Just using a letter, or minus sign will return an (appropriate) error message. Who feels like testig this new feature? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz