AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse
Thema durchsuchen
Ansicht
Themen-Optionen

ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse

Ein Thema von nachtstreuner · begonnen am 16. Feb 2012 · letzter Beitrag vom 16. Feb 2012
Antwort Antwort
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#1

ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse

  Alt 16. Feb 2012, 10:36
Datenbank: FIREBIRD • Version: 2.5 • Zugriff über: ZEOS / UIB
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:
   { 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;
Das Feld EditBenutzer, beinhaltet den Suchbegriff für das SQL Statement.
Warum funktioniert die Abfrage mit ZEOS nicht ? (siehe Fehlermeldung im angehängten Bild)
Miniaturansicht angehängter Grafiken
16-02-2012-11-35-51.jpg  
Alles wird gut -
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse

  Alt 16. Feb 2012, 10:55
Versuch mal
zQueryUser.ParamByName('sBENUTZERNAME').Value := Trim(EditBenutzer.Text);
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#3

AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse

  Alt 16. Feb 2012, 10:59
Hallo...
Zitat:
Während die UIB ein korrektes Ergebnis liefert, liefert die ZEOS ein leeres Ergebnis zurück.
...was wäre denn ein korrektes Ergebnis (Inhalt von 'VORNAME') ?

versuche mal Showmessage(zQueryUser.FieldByName('VORNAME').AsString); ...erklären warum VORNAME null ist kann ich auch nicht sagen.
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#4

AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse

  Alt 16. Feb 2012, 11:57
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.
Miniaturansicht angehängter Grafiken
16-02-2012-12-56-34.jpg  
Alles wird gut -
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#5

AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse

  Alt 16. Feb 2012, 11:59
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)
Alles wird gut -
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#6

AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse

  Alt 16. Feb 2012, 12:24
Zitat:
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.
...scheinbar kann man auch ein anderes Zeichen als "Einleitung" für einen Parameter definieren. Wozu das gut sein soll ??? Dein SQl mit dem : ist aber richtig. Hast du schon mal im Forum von Zeos geschaut ob es ähnliche Probleme dort gibt ? Hast du die aktuellste Version von Zeos ?
http://zeos.firmos.at/viewforum.php?...7ecc204104bcdc
  Mit Zitat antworten Zitat
nachtstreuner

Registriert seit: 21. Aug 2005
Ort: ESA
104 Beiträge
 
Delphi XE2 Professional
 
#7

AW: ZEOS v 7.0.0 und UIB 2.5 liefern unterschiedliche Abfrageergebnisse

  Alt 16. Feb 2012, 13:03
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?
Alles wird gut -
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz