AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TQuery-Felder zur Laufzeit ändern?
Thema durchsuchen
Ansicht
Themen-Optionen

TQuery-Felder zur Laufzeit ändern?

Offene Frage von "Svenkan"
Ein Thema von Svenkan · begonnen am 6. Okt 2008 · letzter Beitrag vom 6. Okt 2008
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

TQuery-Felder zur Laufzeit ändern?

  Alt 6. Okt 2008, 13:29
Datenbank: BDE • Zugriff über: TQuery
Hallo!
Ist es möglich, dass zur Laufzeit eines Programms die Felder, welche ich auslese aus einer Datenbank, ändern kann?
Ich benötige dies, da ich mit meinem Programm aus 2 verschiedenen Versionen einer Datenbank auslese, wo sich einzelne Values unterscheiden und mein Programm sonst rummeckert, dass die vorgegebenen Felder nicht zu denen in der Datenbank passen (z.B. verschiedene Zahlentypen wie Integer oder Float).
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: TQuery-Felder zur Laufzeit ändern?

  Alt 6. Okt 2008, 13:50
Ich würde die Struktur der Tabelle auslesen und mir dann den SELECT-Befehl zusammenbasteln.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: TQuery-Felder zur Laufzeit ändern?

  Alt 6. Okt 2008, 13:53
Es ist ja so, dass ich vorm Connecten schon die Felder hinzufügen muss, die ich da auslesen will.
Gibt es eine Möglichkeit eine Datei zu erstellen, wo die nötigen Spalten mit Ihren Eigenschaften verzeichnet stehen und diese dann einzulesen und der BDE diese Informationen dann zu überlassen?
Sven Kannenberg
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: TQuery-Felder zur Laufzeit ändern?

  Alt 6. Okt 2008, 14:07
Hallo,

Du könntest zur Laufzeit über eine Abfrage des Spaltentypes an Deinem Problem "vorbeikommen".
Delphi-Quellcode:
tabelle.FieldDefs.Find('meinespalte').DataType
tabelle.FieldDefs[0].DataType
z.B. in der Form:
Delphi-Quellcode:
with tabelle do begin
  case FieldDefs[0].DataType of
    ftInteger : Fields[0].AsInteger := 123;
    ftFloat : Fields[0].AsFloat := 123.456;
    // ... hier alle benötigten Feldtypen ergänzen
  else
    Fields[0].AsString := 'das geht doch nicht';
  end;
end;
Aber eigentlich müssen die benötigten Felder vor dem Aufbau der Datenbankverbindung noch nicht in der TQuery enthalten sein. Durch das Ausführen des SELECT-Statements der TQuery müsstest Du anschließend in der TQuery die richtigen Datentypen zur Verfügung haben.
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: TQuery-Felder zur Laufzeit ändern?

  Alt 6. Okt 2008, 14:35
Also wenn ich jetz z.B. über TQuery1 die Datenbank 'C:\Programme\svPlan\VT08_09.dbf' auslesen und prüfen möchte, ob das Feld 'ANZAHL' vom Typ 'SmallInt' oder 'Double' (Größe: 15) ist, müsste ich das z.B. wie anstellen?
Sven Kannenberg
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

Re: TQuery-Felder zur Laufzeit ändern?

  Alt 6. Okt 2008, 14:49
Hallo,

schau mal bitte in die Delphihilfe unter TFieldTyp, dort sind alle Datentypen aufgelistet.
Es könnte in etwas (nicht getestet) so gehen:
Delphi-Quellcode:
with TQuery1.FieldByName('ANZAHL') do begin
  case DataType of
    ftInteger : AsInteger := 123;
    ftSmallInt : AsInteger := 123;
    ftFloat : AsFloat := 123.456;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:55 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