![]() |
ADO - Tabellenname herausfinden anhand eines DBEdits
Hallo Boardies,
weiß zufällig jemand, wie ich anhand eines TDBEdits an den dahinter stehenden Tabellennamen (Name in der Datenbank, nicht von der TADOTable) komme? Hatte gedacht das ginge über die DataSource, aber da habe ich mich irgendwie geirrt! Für Tipps und Anregungen bin ich wie immer sehr dankbar! Gruß Matt |
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
naja, hab grad ma gekuckt.. kam zum ergebniss, dass bei mir der tabellenname in der tadotable eingetragen ist und alle anderen komponenten z.b. datasource draufzugreifen..
|
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
hat mit dbedit nix zu tun, aber vielleicht ...
alle verfügbaren tabellen der db werden in ein stringlist geschrieben:
Delphi-Quellcode:
var SL: TStrings;
{----- stringlist die alle tabelle der datenbank übergeben bekommt ---------} SL := TStringList.Create; ADOconnection.GetTableNames(SL, false); {alle tabellen aus der db auslesen} |
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
Danke Markon,
das mit allen Tables kenne ich, nützt mir aber leider nix, da ich immer nur die eine brauche, von dem dbedit, in dem ich gerade bin :cry: Gruß Matt |
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
TDBEdit -> TDataSource -> TADOTable.TableName. das ist der name der Tabelle in der Datenbank.
|
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
Zitat:
Zitat:
|
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
Danke Ihr beiden, dass Ihr Euch den Kopf so zerbrecht deswegen.
Leider habe ich es immernoch nicht hinbekommen! Ich brauche den Name als String und bei a := tdbedit(sender).DataSource.????? ist Ende!!! Gruß Matt |
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
Wenn Du Dir angewöhnen könntest, Deine Querys wie folgt zu gestalten:
SQL-Code:
dann wäre das hier die Lösung:
select Feld1
,Feld2 ... ,Feldn ,'TabellenName' as AusTabelle -- auf diese Zeile kommet es an! from TabellenName
Delphi-Quellcode:
TDBEdit(Sender).DataSource.DataSet.FieldByName('AusTabelle').AsString
|
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
@Leuselator
Danke für den Hinweis, werde mich in Zukunft bemühen den Code richtig darzustellen! Danke auch für Deinen Tipp, nur leider kann ich es nicht nachvollziehen, wie Du das meinst. Gruß Matt |
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
Hey Matt: ich wollte Dich nicht bezüglich der Gestaltung (im Sinne von Darstellung) deiner Query's schulmeistern: was ich meinte ist die Zeile:
SQL-Code:
der Teil nach den 2 Minuszeichen ist nur ein Kommentar und kann weggelassen werden.
,'TabellenName' as AusTabelle -- auf diese Zeile kommet es an!
Also angenommen, Du hättest 2 Tabellen mit folenden Feldern:
Code:
dann würdest Du folgende 2 Querys dafür bauen:
Tabelle: Kunden
Felder: Vorname, Name, Geburtstag Tabelle: Artikel Felder: Nummer, Bezeichnung, Preis
SQL-Code:
und:
select Vorname
,Name ,Geburtstag ,'Kunden' AS AusTabelle from Kunden
SQL-Code:
Nun kannst Du in Delphi den Namen der Tabelle erfahren, indem Du nach dem Feld "AusTabelle" fragst. Dieses Feld ist statisch (in allen Datensätzen gleicher Wert) und hat bei der ersten Query den Inhalt: "Kunden", bei der 2. : "Artikel".
select Nummer
,Bezeichnung ,Preis ,'Artikel' AS AusTabelle from Artikel Also kannst Du im OnKlick-Ereignis eines DB-Edits den Wert aus dem dazugehörigen DataSet ermitteln:
Delphi-Quellcode:
Gruß
procedure TForm1.DBEdit1Click(Sender: TObject);
var MeineTabelle : String; begin // Onlinhilfe lesen: TDataSet.FindField // und: Assigned() if Assigned(TDBEdit(Sender).DataSource.DataSet.FindField('AusTabelle')) then MeineTabelle := TDBEdit(Sender).DataSource.DataSet.FieldByName('AusTabelle').AsString; end; |
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
Ja sauber, nu habe ich es zwar verstanden, aber ich kann doch jetzt nicht alles auf Query umstellen :?
Ich sollte vielleicht endlich mal schildern wofür ich es brauche, vielleicht gibt es ja noch eine andere Lösung für mein Problem! Also, da ich sehr schreibfaul bin und meine Programmhilfen immer sehr dürftig ausfallen, gebe ich dem Benutzer gerne Tipps während er mit dem Programm arbeitet. Das mache ich wenn ein Feld betreten wird, dann zeige ich einen Text in der Statusleiste, der dem User etwas erklärt. Bei aufwendigen Formularen, sind das dann schon mal so an die 40 OnEnter-Ereignisse und das macht das ganze sehr unübersichtlich. Also habe ich mir ein kleines Tool erstellt, das meine Tabellen ausliest und eine Tabelle anlegt mit "Tabellenname", "Feldname", und "Hilfetext". Nun Pflege ich alle Hilfetexte in diese DB ein und möchte nun in meinem Programm bei OnEnter einses Feldes gerne auf die "Hilfe-Tabelle" zugreifen und den richtigen Text zu diesem Feld auslesen. Problem ist nur, dass ich mehrere Felder habe, die gleich lauten können, deswegen schreibe ich auch den Tabellennamen in die Hilfe-DB!!! Kann ich das knicken oder gibt es da Lösungsansätze? Gruß Matt |
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
Wenn Du AdoTable benutzt und eine Komponentenkette wie:
TAdoConnection - TAdoTable - TDataSource - TDbEdit hast, dann geht doch:
Delphi-Quellcode:
oder?
procedure TForm1.DBEdit1Enter(Sender: TObject);
begin if (TDBEdit(Sender).DataSource.DataSet is TAdoTable) then StatusPanel.Caption := TAdoTable(TDBEdit(Sender).DataSource.DataSet).TableName; end; Dieser TableName ist (zumindest bei mir mit SQLServer2000) der Tatsächliche Tabellenname in der Datenbank. Ansonsten zeig Code... Edit PS: [subjectivmode] Query sind deutlich flexibler und spätestens beim Wechsel auf eine "echte" Datenbank angesagt. Die Mühe lohnt also, da Dir später ein Wechsel auf andere DB's leichter fällt.[/subjectivmode] |
Re: ADO - Tabellenname herausfinden anhand eines DBEdits
Ich verneige mich tief und hoffe du nimmst mir meine, diesbezügliche, Inkompetenz nicht übel!
Es funktioniert jetzt nach deiner letzten Anweisung! Ich bin Dir sehr dankbar! Gruß Matt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:58 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-2025 by Thomas Breitkreuz