AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken "Feld xyz wurde nicht gefunden"
Thema durchsuchen
Ansicht
Themen-Optionen

"Feld xyz wurde nicht gefunden"

Ein Thema von Mysterio08 · begonnen am 15. Jul 2010 · letzter Beitrag vom 25. Jul 2010
Antwort Antwort
Seite 1 von 2  1 2      
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#1

"Feld xyz wurde nicht gefunden"

  Alt 15. Jul 2010, 08:16
Datenbank: MySql • Version: 5.1 • Zugriff über: ADO/OBDC
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:
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;
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".
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:
if Sender = AdoQuery1.FieldByName('HierarchischeEinordnung') then if AdoQuery1.Fields('HierarchischeEinordnung').Exists then Text := Copy(AdoQuery1.FieldByName('HierarchischeEinordnung').AsString , 1, 50)
mfg
  Mit Zitat antworten Zitat
hoika

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

AW: "Feld xyz wurde nicht gefunden"

  Alt 15. Jul 2010, 08:39
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
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: "Feld xyz wurde nicht gefunden"

  Alt 15. Jul 2010, 08:41
Oder im Grid (Columeditor) einstellen, welche Felder du willst
Markus Kinzler
  Mit Zitat antworten Zitat
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#4

AW: "Feld xyz wurde nicht gefunden"

  Alt 15. Jul 2010, 09:06
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: "Feld xyz wurde nicht gefunden"

  Alt 15. Jul 2010, 09:14
Die Columns kann man auch dynamisch erzeugen
Markus Kinzler
  Mit Zitat antworten Zitat
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#6

AW: "Feld xyz wurde nicht gefunden"

  Alt 15. Jul 2010, 11:44
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)!

Hier habe ich noch einen anderen Ansatz gefunden, die Memo-Felder im DBGrid darstellen zu können. Nur was für Code muss in diesem OnDrawColumnCell-Ereignis stehen?

Geändert von Mysterio08 (15. Jul 2010 um 11:48 Uhr)
  Mit Zitat antworten Zitat
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#7

AW: "Feld xyz wurde nicht gefunden"

  Alt 16. Jul 2010, 08:20
Gibt es denn noch eine Alternative, wie ich Memo-Felder im DBGrid anzeigen lassen kann?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

AW: "Feld xyz wurde nicht gefunden"

  Alt 16. Jul 2010, 13:59
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;
Andreas
  Mit Zitat antworten Zitat
Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#9

AW: "Feld xyz wurde nicht gefunden"

  Alt 25. Jul 2010, 09:44
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: "Feld xyz wurde nicht gefunden"

  Alt 25. Jul 2010, 10:15
MemoOnGetText ist der Handler, welcher im AfterOpen-Event der Tabelle zugewiesen wird.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 23:10 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