![]() |
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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