Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO - Tabellenname herausfinden anhand eines DBEdits (https://www.delphipraxis.net/14528-ado-tabellenname-herausfinden-anhand-eines-dbedits.html)

Matt 10. Jan 2004 21:01


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

markon 12. Jan 2004 08:27

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..

markon 12. Jan 2004 08:46

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}

Matt 12. Jan 2004 10:51

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

r_kerber 12. Jan 2004 11:01

Re: ADO - Tabellenname herausfinden anhand eines DBEdits
 
TDBEdit -> TDataSource -> TADOTable.TableName. das ist der name der Tabelle in der Datenbank.

markon 12. Jan 2004 12:39

Re: ADO - Tabellenname herausfinden anhand eines DBEdits
 
Zitat:

Zitat von r_kerber
TDBEdit -> TDataSource -> TADOTable.TableName. das ist der name der Tabelle in der Datenbank.

hmm, das wollte er eigentlich nicht, hatte ich auch schon in erwägung gezogen, aber:

Zitat:

Zitat von matt
weiß zufällig jemand, wie ich anhand eines TDBEdits an den dahinter stehenden Tabellennamen (Name in der Datenbank, nicht von der TADOTable) komme? ...

weiß aber auch nich wie's anders funzt...

Matt 13. Jan 2004 16:11

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

Leuselator 14. Jan 2004 13:15

Re: ADO - Tabellenname herausfinden anhand eines DBEdits
 
Wenn Du Dir angewöhnen könntest, Deine Querys wie folgt zu gestalten:

SQL-Code:
select Feld1
       ,Feld2
       ...
       ,Feldn
       ,'TabellenName' as AusTabelle -- auf diese Zeile kommet es an!
  from TabellenName
dann wäre das hier die Lösung:
Delphi-Quellcode:
TDBEdit(Sender).DataSource.DataSet.FieldByName('AusTabelle').AsString

Matt 15. Jan 2004 20:03

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

Leuselator 16. Jan 2004 04:55

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:
,'TabellenName' as AusTabelle -- auf diese Zeile kommet es an!
der Teil nach den 2 Minuszeichen ist nur ein Kommentar und kann weggelassen werden.
Also angenommen, Du hättest 2 Tabellen mit folenden Feldern:
Code:
Tabelle: Kunden
Felder: Vorname,
         Name,
         Geburtstag

Tabelle: Artikel
Felder: Nummer,
         Bezeichnung,
         Preis
dann würdest Du folgende 2 Querys dafür bauen:
SQL-Code:
select Vorname
       ,Name
       ,Geburtstag
       ,'Kunden' AS AusTabelle
  from Kunden
und:
SQL-Code:
select Nummer
       ,Bezeichnung
       ,Preis
       ,'Artikel' AS AusTabelle
  from Artikel
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".
Also kannst Du im OnKlick-Ereignis eines DB-Edits den Wert aus dem dazugehörigen DataSet ermitteln:
Delphi-Quellcode:
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;
Gruß

Matt 16. Jan 2004 23:11

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

Leuselator 17. Jan 2004 07:58

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:
procedure TForm1.DBEdit1Enter(Sender: TObject);
begin
  if (TDBEdit(Sender).DataSource.DataSet is TAdoTable)
    then StatusPanel.Caption := TAdoTable(TDBEdit(Sender).DataSource.DataSet).TableName;
end;
oder?

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]

Matt 18. Jan 2004 20:49

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