Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DataSet Felddefinition ftString und String = Nix (https://www.delphipraxis.net/189098-dataset-felddefinition-ftstring-und-string-%3D-nix.html)

haentschman 3. Mai 2016 13:49

Datenbank: beliebig • Version: ? • Zugriff über: ?

DataSet Felddefinition ftString und String = Nix
 
Hallo... :P

Ich bin gerade an einer Geschichte verzweifelt die so erst einmal ziemlich einfach aussieht. :?

1. Man nehme eine VirtualTable (Devart) und füge Felder hinzu...
Delphi-Quellcode:
function CreateVirtualTable: TDataSet;
begin
  Result := TVirtualTable.Create(nil);
  Result.FieldDefs.Add('ID', ftInteger);
  Result.FieldDefs.Add('PERSONALID', ftInteger);
  Result.FieldDefs.Add('PNAME', ftString);
  Result.Open;
end;
2. Man fülle die Table:
Delphi-Quellcode:
.
.
Table.AppendRecord([1, 2, 'Blubb']);
.
.
3. man schaue in das angeschlossene DBGrid und staunt: :shock:
Die numerischen Werte werden anstandslos angezeigt... der String nicht! Nach dem AppendRecord ist der String auch nicht im Datensatz. Nur (ausschließlich) mit FeldTyp ftVariant wird der String mitgenommen und angezeigt.

Kennt das jemand und kann das erklären?

Danke. 8-)

baumina 3. Mai 2016 13:58

AW: DataSet Felddefinition ftString und String = Nix
 
So ein Stringfeld braucht meist eine Länge, Size = 0 ist da bestimmt nicht so prickelnd.

p80286 3. Mai 2016 15:18

AW: DataSet Felddefinition ftString und String = Nix
 
Zitat:

Zitat von baumina (Beitrag 1337363)
So ein Stringfeld braucht meist eine Länge, Size = 0 ist da bestimmt nicht so prickelnd.

Wo ist denn da eine Size-Angabe?
Oder handelt es sich hierbei um einen der so praktischen Default-Parameter?

Gruß
K-H

baumina 3. Mai 2016 15:22

AW: DataSet Felddefinition ftString und String = Nix
 
DB.TFieldDefs.Add :
Zitat:

procedure Add(const Name: string; DataType: TFieldType; Size: Integer = 0; Required: Boolean = False);
Zitat:

Size ist nur für eine Felddefinitionsobjekt mit einem der folgenden TFieldType-Werten von Bedeutung: ftString, ftBCD, ftBytes, ftVarBytes, ftBlob, ftMemo oder ftGraphic. Bei String- und Byte-Feldern enthält Size die Anzahl der für das Feld in der Tabelle reservierten Bytes. Für ein BCD-Feld gibt Size die Anzahl der Stellen nach dem Dezimalzeichen an. Bei einem BLOB-, Memo- oder Grafikfeld enthält Size die Anzahl der Bytes des Feldwertes, die in der aktuellen Datenbanktabelle gespeichert sind.

haentschman 3. Mai 2016 15:44

AW: DataSet Felddefinition ftString und String = Nix
 
:oops:
Zitat:

So ein Stringfeld braucht meist eine Länge, Size = 0 ist da bestimmt nicht so prickelnd.
Wo ist denn da eine Size-Angabe?
...wo ihr Recht habt, habt ihr Recht. :wink: Der Tisch hat jetzt auch Absplitterungen und der Kopf ne Beule. :P Das war einfach zu einfach. Normalerweise weis man sowas... nur ich hab´s nicht gesehen. :oops:

Zu meiner Verteidigung. Ich muß mich erst seit kurzer Zeit und langer Abstinenz wieder mit Datasets rumschlagen. Da kommt man aus der Übung. :zwinker:

Danke an alle...


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