![]() |
Datenbank: ABS • Version: 488 • Zugriff über: Datascore
Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Ich habe verschiedene Datenbankdateien mit verschiedenen Tabellen. Wie kann ich, durch klick auf TDBGrid herausfinden, ob eine Memofeld oder ein Grafikfeld enthalten ist und dann entsprechend reagieren?
|
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Zitat:
|
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Hi,
du kannst einfach die Fields des Datasets durchlaufenn und dann mit {dataset}.DataType herausfinden, um was für ein Feld es sich handelt ... Suche mal in der Hilfe nach TFieldType ... Die FeldTypen solltest du am jedoch noch einmal mit deiner (ads)Dataset Componente vergleichen. Es kann durchaus ein paar Unterschiede zu TDataset.Fields[].DataType geben. Beispiel
Delphi-Quellcode:
with tbl do
begin for i := 0 to tbl.fields.count - 1 do begin case Fields[i].DataType of ftUnknown: // mach was ftString: // mach was ftSmallint: // mach was ftInteger: // mach was ftWord: // mach was ftBoolean: // mach was ftFloat: // mach was ftCurrency: // mach was ftBCD: // mach was ftDate: // mach was ftTime: // mach was ftDateTime: // mach was ftBytes: // mach was ftVarBytes: // mach was ftAutoInc: // mach was ftBlob: // mach was ftMemo: // mach was ftGraphic: // mach was ftFmtMemo: // mach was ... end; // case end; //case end; //with end; |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Zitat:
|
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Zitat:
Delphi-Quellcode:
Es gibt eigentlich nur bei den AutoInc-Typen einen Unterschied zu den "normalen":
case ABSQuery1.AdvFieldDefs[1].DataType of // oder ABSTable
aftUnknown: ; aftChar: ; aftString: ; aftWideChar: ; aftWideString: ; aftShortint: ; aftSmallint: ; aftInteger: ; aftLargeint: ; aftByte: ; aftWord: ; aftCardinal: ; aftAutoInc: ; aftAutoIncShortint: ; aftAutoIncSmallint: ; aftAutoIncInteger: ; aftAutoIncLargeint: ; aftAutoIncByte: ; aftAutoIncWord: ; aftAutoIncCardinal: ; aftSingle: ; aftDouble: ; aftExtended: ; aftBoolean: ; aftCurrency: ; aftDate: ; aftTime: ; aftDateTime: ; aftTimeStamp: ; aftBytes: ; aftVarBytes: ; aftBlob: ; aftGraphic: ; aftMemo: ; aftFormattedMemo: ; aftWideMemo: ; aftGuid: ; end; // case
Code:
ABSType - FieldType
------------------------------ aftAUTOINC - ftAUTOINC aftAUTOINCSHORTINT - ftAUTOINC aftAUTOINCSMALLINT - ftAUTOINC aftAUTOINCINTEGER - ftAUTOINC [b]aftAUTOINCLARGEINT - [color=red]ftLARGEINT[/color][/b] // Das ist eine Stolperfalle aftAUTOINCBYTE - ftAUTOINC aftAUTOINCWORD - ftAUTOINC aftAUTOINCCARDINAL - ftAUTOINC |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Ja, habe ich geschnallt. Aber eigentlich brauche ich doch nur:
Delphi-Quellcode:
Oder?
with tbl do
begin for i := 0 to tbl.fields.count - 1 do begin case Fields[i].DataType of ftGraphic: // mach was ftFmtMemo: // mach was ... end; // case end; //case end; //with end; |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Hallo Heike,
wenn du dein BLOB-Feld in einem Dialog anzeigen willst, dann kannst du doch einfach ein TDBMemo verwenden - eine vorherige Prüfung auf den Feldtyp erübrigt sich dann eigentlich. Grüße vom marabu |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Zitat:
Eigentlich sollte es so reichen. Eventuell noch eine Prüfung ob es ftMemo ist. |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Zitat:
dann gehst Du aber davon aus das bekannt ist das in der Tabelle ein Blobfeld ist. Ich "glaube" Heike möchte eine Oberfläche für ABS-Datenbanken schreiben von der sie die Struktur nicht kennt. |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Wenn das so ist, dann halte ich lieber meinen Schnabel.
marabu |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Zitat:
|
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
So ganz klappt es doch nicht
Delphi-Quellcode:
Wenn ich so abfrage und in der Tabelle sind beide Typen enthalten, dann habe ich keine Unterscheidung (Es werden beide abgearbeitet). Eigentlich sollte es so sein, wenn ich auf ein Feld im DBGrid clicke soll, je nach dem was es für ein Typ (ftGraphic oder ftMemo) ist, zB. eine Form mit ein TDBMemo oder TDBImage aufgehen. Hat Einer einen Tipp wie man soetws angehen kann?
with Tabelle do
begin for i := 0 to Talle.fields.count - 1 do begin case Fields[i].DataType of ftGraphic: // mach was ftFmtMemo: // mach was end; // case end; //case end; //with end; |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Zitat:
Delphi-Quellcode:
[Edit]Delphi-tag vergessen :wall: [/Edit]
procedure TBrowseForm.BrowseGrid1DblClick(Sender: TObject);
begin if ( BrowseGrid.SelectedField.DataType = ftMemo ) or ( BrowseGrid.SelectedField.DataType = ftBlob ) then begin // Hier kann man dann mit SelectedField alles mögliche anstellen... end; end; |
Re: Herausfinden ob Memofeld oder Grafikfeld enthalten ist ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 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 by Thomas Breitkreuz