![]() |
Datenbank: ABSDataBase • Version: 7.91 • Zugriff über: ABSQuery
ABSQuery und FieldType
Hallo.
Gibt es eine Möglichkeit den Feldtypen einer Tabellenspalte mittels SQL auszulesen? Mein Ansatz war nach einiger Suche:
Code:
Aber beim compilieren wird eine Fehlermeldung ausgegeben:
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = test_db AND COLUMN_NAME = neue_spalte
Code:
Exception-Klasse EDatabaseError mit Meldung 'Database file 'INFORMATION_SCHEMA' does not exist'.
Ändere ich das um in
Code:
Gibt es eine andere Fehlermeldung:
SELECT DATA_TYPE FROM test_db WHERE COLUMN_NAME = neue_spalte
Code:
Exception-Klasse EABSException mit Meldung 'Cannot find field DATA_TYPE - Native error: 10305'.
Gibt mir bitte jemand einen Tipp, wie ich als Anfänger in Sachen SQL das bewerkstelligen kann? Ich glaube die Lösung gefunden zu haben:
Code:
Somit kann ich mit feldtyp oder feldtyp_string weiter arbeiten. x ist ein beliebiges Feld der Tabelle.
var
feldtyp : TFieldType; feldtyp_string : String; begin Query.SQL.Text := 'SELECT * From ' + Table_Name + ' WHERE 1 = 0'; Query.Open; feldtyp := Query.Fields[x].DataType; feldtyp_string := _Query.Fields[x].ToString; end; Es gibt ein neues Problem. Die Abfrage führt bei einem ftAutoInc - Feld zu einer ftInteger Rückgabe. Wie könnte man hier noch eine Unterscheidung der Felder herausfinden? |
AW: ABSQuery und FieldType
Ich kenne mich mit dem System nicht aus.
Das Information Schema war genau die richtige Wahl, es ist ein definierter Standard. Als Anfänger (bzw. Neuling mit ABS) müsstest Du also hergehen und bei diesem System nach dem Unterstützungsgrad für diesen Information Schema Standard suchen. Ich fürchte, er wird nicht unterstützt. Dann ist Schritt 2 wie von Dir durchgeführt ein Workaround zu finden. Diese heißen so, weil sie non standard sind und idR irgendwelchen Limitierungen unterliegen. (Auf die Du auch prompt gestoßen bist) Vielleicht gibt es noch bessere "Hacks" / Workarounds, gestern oder heute gab es an anderer Stelle mit ABS ein Problem Felder zu ergänzen. Hierzu hat ABS eine extra Funktion, non standard. Irgendwann stellt sich halt die Frage, ob man alle diese Extras immer berücksichtigen will oder sich um alternatives DB System kümmert. P.S.: Ja guten Morgen, "Felder ergänzen" war ja Dein Problem. Also, wenn es dafür was von Ratiopharm gibt, dann vielleicht auch für Feldtypen Bestimmung. Einfach in der Doku schauen. An meiner Grundsatzfrage ändert es nichts. Du musst abwägen, ob bei einer solchen Sache die Vorteile des Nischensystems überwiegen. (Was zugegeben vielleicht nicht einfach ist, wenn man kaum Alternativen kennt) |
AW: ABSQuery und FieldType
Danke für die Info.
Ich werde mich weiter belesen :-) LG Mathias |
AW: ABSQuery und FieldType
Zitat:
Gruß K-H |
AW: ABSQuery und FieldType
Moin...8-)
Zitat:
|
AW: ABSQuery und FieldType
Zitat:
Somit soll das für mich eine zusätzliche Fehlerreduzierung sein, falls ich aus Versehen die Struktur einer Tabelle verändere. LG Mathias |
AW: ABSQuery und FieldType
Hallo,
dann nutzt TABSTable mit den entsprechenden Properties (z.B. ![]() Das das DB-System ja quelloffenen ist, kannst du das ja auch debuggen. |
AW: ABSQuery und FieldType
Zitat:
Meine Lizenz ist leider ohne Quellcode - dafür ist es aber eine Multiuser-Lizenz. LG Mathias |
AW: ABSQuery und FieldType
Hallo,
per SQL musst du auf die Systemtabellen (Schematabellen) zugreifen. Ein Select Id From DingsBums läßt keine Rückschluss, welchen Datentyp Id hat. Es könnte ja zum Bsp. ein berechnetes Feld des Views DingsBums sein. |
AW: ABSQuery und FieldType
Zitat:
Leider existiert dies bei ABS Database nicht. Der Entwickler hat mir geantwortet: Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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