![]() |
Datenbank: MySql • Version: 5.1 • Zugriff über: ADO/OBDC
"Feld xyz wurde nicht gefunden"
Hallo,
ich möchte in meiner Datenbankanwendung gerne Memo-Felder im DBGrid anzeigen lassen. Dafür habe ich bei meiner TAdoQuery-Komponente die entsprechenden Felder hinzugefügt (per Rechtsklick auf die Komponente) und dann das OnGetText-Ereignis wie folgt ausgewertet (ein Ereignis für alle Memo-Felder):
Delphi-Quellcode:
Wenn ich alle diese Felder anzeige, gibt es kein Problem. Sobald ich jedoch eines weglasse, bekomme ich die Meldung á la: "Das Feld Verantwortungsbereich wurde nicht gefunden".
procedure TForm1.OnGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begin //Dafür sorgen, dass auch die Memo-Felder im DBGrid angezeigt werden if Sender = AdoQuery1.FieldByName('HierarchischeEinordnung') then Text := Copy(AdoQuery1.FieldByName('HierarchischeEinordnung').AsString , 1, 50) else if Sender = AdoQuery1.FieldByName('Verantwortungsbereich') then Text := Copy(AdoQuery1.FieldByName('Verantwortungsbereich').AsString , 1, 50) //Es folgen noch weitere Felder end; Wie kann ich den Fehler umgehen? Die Memo-Felder anders darstellen? Oder gibt es eine Eigenschaft von AdoQuery, mit der ich nach einem Feld fragen kann? Dass es so aussieht:
Delphi-Quellcode:
if Sender = AdoQuery1.FieldByName('HierarchischeEinordnung') then if AdoQuery1.Fields('HierarchischeEinordnung').Exists then Text := Copy(AdoQuery1.FieldByName('HierarchischeEinordnung').AsString , 1, 50)
mfg |
AW: "Feld xyz wurde nicht gefunden"
Hallo,
du hast wohl persistente Felder benutzt per Doppelklick auf die Query (z.B. zum Einstellen der Breite/Formatierung). Dann darfst du kein Feld weglassen. Viell. kannst du ja per DB_XXX.Visible:=False die nicht benötigten Felder ausblenden. Heiko |
AW: "Feld xyz wurde nicht gefunden"
Oder im Grid (Columeditor) einstellen, welche Felder du willst
|
AW: "Feld xyz wurde nicht gefunden"
Das ganze geschieht aber dynamisch, ich weiß also nicht, welche Felder der User auswählen wird - deshalb fällt das mit dem DBGrid-Columns weg.
Mit .Visible habe ich es noch nicht ausprobiert, das werde ich später mal tun! |
AW: "Feld xyz wurde nicht gefunden"
Die Columns kann man auch dynamisch erzeugen
|
AW: "Feld xyz wurde nicht gefunden"
Das mit dem Ausblenden von Spalten halte ich doch nicht für eine so gute Idee, weil es nicht besonders elegant ist.
Deswegen: Wie genau hast du es gemeint, mkinzler, mit dem Erstellen der Columns per Editor? Das löst ja noch nicht mein Problem, Memo-Felder im DBGrid anzeigen zu wollen (und nicht nur ein MEMO zu lesen)! ![]() |
AW: "Feld xyz wurde nicht gefunden"
Gibt es denn noch eine Alternative, wie ich Memo-Felder im DBGrid anzeigen lassen kann?
|
AW: "Feld xyz wurde nicht gefunden"
Delphi-Quellcode:
procedure TForm1.MemoOnGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begin //Dafür sorgen, dass auch die Memo-Felder im DBGrid angezeigt werden Text := Copy(Sender.AsString , 1, 50); end;
Delphi-Quellcode:
procedure TForm1.TabelleXyAfterOpen(dataset:TDataset);
var i : integer; begin // allen Memo-Feldern den neuen Event-Handler zuweisen for i := 0 to Dataset.Fields.Count-1 do begin if Dataset.Fields[i].DataType = ftMemo then Dataset.Fields[i].OnGetText := MemoOnGetText; end; end; |
AW: "Feld xyz wurde nicht gefunden"
Ich habe mich eben nochmal drangesetzt und versucht, das Problem zu lösen, habe es aber noch nicht geschafft.
Mit dem von dir geposteten Code, shmi bin ich schon ein wenig weitergekommen, aber es tritt immer noch derselbe Fehler auf. Was meintest du mit "allen Memo-Feldern den neuen Event-Handler zuweisen"? Welchen Event-Handler? TabelleXyAfterOpen? Und wo soll ich den zuweisen, der wird mir bei den Memo-Felder bei keinem Ereignis angezeigt. |
AW: "Feld xyz wurde nicht gefunden"
MemoOnGetText ist der Handler, welcher im AfterOpen-Event der Tabelle zugewiesen wird.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 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