AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ABSQuery und FieldType
Thema durchsuchen
Ansicht
Themen-Optionen

ABSQuery und FieldType

Ein Thema von NoGAD · begonnen am 22. Mär 2020 · letzter Beitrag vom 27. Mär 2020
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
325 Beiträge
 
Delphi 10.4 Sydney
 
#1

ABSQuery und FieldType

  Alt 22. Mär 2020, 09:49
Datenbank: ABSDataBase • Version: 7.91 • Zugriff über: ABSQuery
Hallo.

Gibt es eine Möglichkeit den Feldtypen einer Tabellenspalte mittels SQL auszulesen?

Mein Ansatz war nach einiger Suche:


Code:
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = test_db AND COLUMN_NAME = neue_spalte
Aber beim compilieren wird eine Fehlermeldung ausgegeben:
Code:
Exception-Klasse EDatabaseError mit Meldung 'Database file 'INFORMATION_SCHEMA' does not exist'.


Ändere ich das um in

Code:
SELECT DATA_TYPE FROM test_db WHERE COLUMN_NAME = neue_spalte
Gibt es eine andere Fehlermeldung:
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:
   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;
Somit kann ich mit feldtyp oder feldtyp_string weiter arbeiten. x ist ein beliebiges Feld der Tabelle.




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?
Mathias

Geändert von NoGAD (22. Mär 2020 um 10:33 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: ABSQuery und FieldType

  Alt 22. Mär 2020, 17:38
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)
Gruß, Jo

Geändert von jobo (22. Mär 2020 um 17:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
325 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ABSQuery und FieldType

  Alt 23. Mär 2020, 06:32
Danke für die Info.

Ich werde mich weiter belesen

LG Mathias
Mathias
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: ABSQuery und FieldType

  Alt 23. Mär 2020, 07:15
Die Abfrage führt bei einem ftAutoInc - Feld zu einer ftInteger Rückgabe.
Wie könnte man hier noch eine Unterscheidung der Felder herausfinden?
"AutoInc" ist eine Eigenschaft (mit der Schrittweite x,die nur die DB kennt) , die nur innerhalb der DB von Interesse ist. Nach außen ist das ein schlichter Integer.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (23. Mär 2020 um 07:17 Uhr) Grund: Ergänzung
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#5

AW: ABSQuery und FieldType

  Alt 23. Mär 2020, 07:45
Moin...
Zitat:
Somit kann ich mit feldtyp oder feldtyp_string weiter arbeiten.
Und was hast du damit vor?
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
325 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: ABSQuery und FieldType

  Alt 23. Mär 2020, 11:07
Moin...
Und was hast du damit vor?
Die Datenbank und die Tabellen werden bei Bedarf zur Laufzeit generiert.
Somit soll das für mich eine zusätzliche Fehlerreduzierung sein, falls ich aus Versehen die Struktur einer Tabelle verändere.

LG Mathias
Mathias
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: ABSQuery und FieldType

  Alt 23. Mär 2020, 18:41
Hallo,
dann nutzt TABSTable mit den entsprechenden Properties (z.B. https://www.componentace.com/help/ab..._fielddefs.htm)

Das das DB-System ja quelloffenen ist, kannst du das ja auch debuggen.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
325 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: ABSQuery und FieldType

  Alt 24. Mär 2020, 10:50
Hallo,
dann nutzt TABSTable mit den entsprechenden Properties (z.B. https://www.componentace.com/help/ab..._fielddefs.htm)

Das das DB-System ja quelloffenen ist, kannst du das ja auch debuggen.
Danke, das hatte ich bisher gemacht, wollte mich gerne auf SQL einarbeiten.

Meine Lizenz ist leider ohne Quellcode - dafür ist es aber eine Multiuser-Lizenz.

LG Mathias
Mathias
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ABSQuery und FieldType

  Alt 24. Mär 2020, 11:29
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.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
325 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: ABSQuery und FieldType

  Alt 24. Mär 2020, 11:34
Hallo,
per SQL musst du auf die Systemtabellen (Schematabellen) zugreifen.

Leider existiert dies bei ABS Database nicht.

Der Entwickler hat mir geantwortet:

Zitat:
Sorry, there is no way to get field type by SQL.
You can look at TABSQuery.Fields or at TABSTable.Fields to get field types.
LG Mathias
Mathias
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 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