Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Selectbefehl liefert unvollständigen string (https://www.delphipraxis.net/170003-selectbefehl-liefert-unvollstaendigen-string.html)

Darlo 24. Aug 2012 21:38

Delphi-Version: XE2

Selectbefehl liefert unvollständigen string
 
Hallo zusammen,

irgendwie sehe ich den Fehler nicht, ggf. kann mir von euch ja jemand auf die Sprünge helfen.
Ich habe eine SQLite Datenbank, in der betroffenen Tabelle [personen] sind unter anderem folgende Felder
enthalten:
nr = NOT NULL PRIMARY KEY
id = varChar(50)

Code:
    query := TUniQuery.Create(self);
    query.Connection := mainCon;

    query.SQL.Text := 'SELECT nr, id FROM personen WHERE dsid = "'+dsid+'" '+
      'ORDER BY nr DESC';
    query.Open;
    query.FindFirst;

    str := (query.FieldByName('gutid').AsString);
str müsste jetzt eigentlich "{8E2DFCAA-BFBD-404F-8CB5-8DED2359EFA3}" enthalten, enthält dummerweise nur "{8E2DFCAA-BFBD-404F-8CB5-"

Was mache ich falsch??

Gruß

himitsu 24. Aug 2012 23:05

AW: Selectbefehl liefert unvollständigen string
 
Falsch ist erstmal, daß du nur
Delphi-Quellcode:
nr
und
Delphi-Quellcode:
id
ausliest. :warn: (
Delphi-Quellcode:
SELECT nr, id FROM
)
Wo soll denn das
Delphi-Quellcode:
gutid
herkommen?

Aber eigentlich sollte da FieldByName eine Exception werfen. :gruebel:

Zitat:

sind unter anderem folgende Felder enthalten:
nr = NOT NULL PRIMARY KEY
id = varChar(50)
Mal so aus Interesse, wie ist denn
Delphi-Quellcode:
gutid
deklariert?


Und unabhängig davon, kommst du mit Parametern besser.
Also so etwa in dieser Art: (mit ein paar kleinen Unterschieden, je nach Zugriffskomponenten und DBMS)
Delphi-Quellcode:
query.SQL.Text := 'SELECT nr, id, gutid FROM personen WHERE dsid = :dsid ORDER BY nr DESC';
query.ParamByName('dsid').AsString := dsid;
query.Open;

Darlo 26. Aug 2012 16:11

AW: Selectbefehl liefert unvollständigen string
 
Hallo himitsu,

ich habe leider den Code nicht vollständig fürs Forum vereinfacht.
Im ersten Post müsste es demnach
Code:
str := (query.FieldByName('id').AsString);
heißen.

Das Problem ist das showmessage unter Firemonkey, ein
Code:
showmessage('{6AFF0DB2-89AB-4F13-8AD6-3BB61870AF4E}');
liefert nur "6AFF0DB2-89AB-4F13-8AD6-". :gruebel:

Gruß

himitsu 26. Aug 2012 16:27

AW: Selectbefehl liefert unvollständigen string
 
Zitat:

Das Problem ist das showmessage unter Firemonkey, ein
Bei mir nicht. :gruebel:

Alle Updates installiert und welche Zielplattform?

Darlo 26. Aug 2012 16:30

AW: Selectbefehl liefert unvollständigen string
 
Update 4 HotFix1
Help Update 6

Zielplattform Win32 (Release)

Betriebssystem Win7 (64bit)

himitsu 26. Aug 2012 16:48

AW: Selectbefehl liefert unvollständigen string
 
Das Komische ist auch, daß nicht nur hinden etwas fehlt, sondern auch vorne das erste Zeichen. :gruebel:

In einen neuem leeren Projekt passiert das auch?

Darlo 26. Aug 2012 17:12

AW: Selectbefehl liefert unvollständigen string
 
Bin schon ganz kirre im Kopf.
Das erste Zeichen zeigt er an.

Habe jetzt mal diverse Tests gemacht, der Kommentar ist das Ergebnis:

Code:
  Showmessage('{6AFF0DB2-89AB-4F13-8AD6-3BB61870AF4E}');               //{6AFF0DB2-89AB-4F13-8AD6-
  Showmessage('{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E}');         //{6AFF0DB2-89AB-4F13-8AD6-Apfel
  Showmessage('{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuche}');   //{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E
  Showmessage('{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuche n}'); //{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuche
  Showmessage('{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuche _}'); //{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuche
  Showmessage('{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuchen');   //{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E
  Showmessage('{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuchen}2'); //{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E
  Showmessage('{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuchen} 2'); //{6AFF0DB2-89AB-4F13-8AD6-Apfel 3BB61870AF4E Kuchen}
In einem neuen Projekt funktioniert es fehlerfrei, verändert man den Projektquellcode wie folgt (FMX.Types und GlobalUseDirect2D := false) :

Code:
program Project2;

uses
  FMX.Forms,
  FMX.Types,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  GlobalUseDirect2D := false; // true by default
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
taucht der Fehler auf.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 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