AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DataField: Das Feld wurde nicht gefunden - Umgang mit DataSources

DataField: Das Feld wurde nicht gefunden - Umgang mit DataSources

Ein Thema von Ykcim · begonnen am 27. Apr 2016 · letzter Beitrag vom 4. Mai 2016
Antwort Antwort
Seite 1 von 2  1 2   
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
760 Beiträge
 
Delphi 10.4 Sydney
 
#1

DataField: Das Feld wurde nicht gefunden - Umgang mit DataSources

  Alt 27. Apr 2016, 14:52
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Hallo Zusammen,

ich versuche gerade meinen Datenbank-Zugriff zu verändern und mit DB-Edits etc und DataSources zu arbeiten.

Leider bekomme ich das nicht hin, wenn ich die Zuweisung zur Laufzeit erstelle:

Delphi-Quellcode:
Data_RFQ.DataSet:=Anfrage.Query_RFQ;
Combo_AnfrageID.DataField:='anfrage_id';
Ich weise dem DataSource ein DataSet (TUniQuery) zu, in dem es auch einen Record gibt. Die Abfrage wird in einer anderen Unit gemacht.
Der Fehler tritt durch die Zeile 2 auf. Wenn ich der ComboBox das DataField zuweise bekomme ich die Fehlermeldung:
Das Feld 'anfrage_id' wurde nicht gefunden.
Ich habe irgendwie keine Idee, wie ich dem Problem beikomme.

Kann mir jemand helfen?

Vielen Dank Patrick
Patrick

Geändert von Ykcim (28. Apr 2016 um 09:08 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: DataField: Das Feld wurde nicht gefunden

  Alt 27. Apr 2016, 15:16
.DataSource/.ListSource gesetzt?
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: DataField: Das Feld wurde nicht gefunden

  Alt 27. Apr 2016, 19:26
Ist die Abfrage zum Zeitpunkt der Zuweisung schön geöffnet?

Wenn nein, dann gibt es das Feld zu dem Zeitpunkt (noch) nicht, da eine geschlossene Abfrage keine Felder enthält.

Geht's eventuell so:
Delphi-Quellcode:
Data_RFQ.DataSet:=Anfrage.Query_RFQ;
Data_RFQ.DataSet.Open;
Combo_AnfrageID.DataField:='anfrage_id';
oder so:
Delphi-Quellcode:
Data_RFQ.DataSet:=Anfrage.Query_RFQ;
Anfrage.Query_RFQ.Open;
Combo_AnfrageID.DataField:='anfrage_id';
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
760 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DataField: Das Feld wurde nicht gefunden

  Alt 28. Apr 2016, 08:54
Hallo Zusammen,

vielen Dank für die Antworten!

@mkinzler
Zitat:
.DataSource/.ListSource gesetzt?
Hatte ich im OI gemacht, weil ich zum Testen ein DataSource auf das Frame gezogen habe. Nachstehend hat es aber auch keine Veränderung gebracht.

Delphi-Quellcode:
   Data_RFQ.DataSet:=Anfrage.Query_RFQ;
   Data_RFQ.DataSet.Open;
   Combo_AnfrageID.DataSource:=Data_RFQ;
   Combo_AnfrageID.DataField:='anfrage_id';
@nahpets
Zitat:
Ist die Abfrage zum Zeitpunkt der Zuweisung schön geöffnet?
Ja, die Abfrage wurde vorher schon geöffnet und ich habe auch einen Record in der Query (Anfrage.Query_RFQ.RecordCount=1 )
Habe aber den oben stehenden Code getestet - leider ohne Erfolg.

Habt Ihr noch eine Idee?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.567 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: DataField: Das Feld wurde nicht gefunden

  Alt 28. Apr 2016, 09:00
Das Feld gibt es wirklich in der Query? Eventuell Groß-/Kleinschreibung prüfen?

Sherlock
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
760 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: DataField: Das Feld wurde nicht gefunden - Umgang mit DataSources

  Alt 28. Apr 2016, 09:07
Ich habe die Vermutung, dass es mit meinem Konstrukt aus Frames Objekten und Units zu tun hat.
Daher möchte ich meine Frage umformulieren.

Wie arbeite ich am besten, wenn ich den Datenbankzugriff kapseln möchte? Heute habe ich ein Objekt (Datenbank: TSQL) in einer eigenen Unit erstellt. Dort habe ich meine Connection, zwei Querys und die Create- und Verbindungsproceduren.
Überall, wo ich einen Datenbankzugriff benötige binde ich dieses Objekt über uses ein. Dann erstelle ich dort eine Variable (Query) vom Typ TUniQuery (UniDac Komponenten) und weise diese der Query in meinem Objekt zu. (Query:= TDatenbank.MySelectQuery)

Das klappte bei meiner bisherigen Arbeitsweise auch immer sehr gut, weil ich den Daten aus einer Abfrage dann den Variablen anderer erstellter Objekte zugeordnet habe. Aber um das Thema Insert Update mit vorhandenen Boardmitteln zu vereinfachen, muss ich jetzt noch DataSources mit ins Spiel bringen, um die DB-EditKomponenten zu bedienen.

Meine Fragen:
Benutzt Ihr für jede Abfrage eine neue Query?
Wenn ich die Verbindung zwischen einer Query und einem DataSource trenne, sind dann die Daten im DataSource noch verfügbar?

Wie arbeitet Ihr?

Ich hoffe, dass der Sermon verständlich ist für Euch.

Vielen Dank
Patrick

P.S.: Habe das Thema ein wenig angepasst.
Patrick
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.028 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: DataField: Das Feld wurde nicht gefunden

  Alt 28. Apr 2016, 09:07
Naheliegend wäre einfach ein Tippfehler im Feldnamen. Oder, dass die Query einfach nicht das liefert, was Du glaubst. Einfach mal im SQL Tool ausprobieren.
Ich kenne UNIDAC nicht, aber kann man nicht hier im Dataset auch einfach die Felder persistieren indem man "alle hinzufügen" wählt. Dann sähe man, was dort wirklich ankommt. Alternativ ein Grid dranhängen und die Query öffnen (natürlich ohne den fehlerhaften Code)

Dazu noch:
Ich kenne besonders von mysql Usern, dass hier immer gern mit möglichst viel Hochkomma in den Queries rumgezaubert wird. Ist das notwendig oder präventiv oder nur Geschmackssache? In Oracle database ist es jedenfalls so, dass die Verwendung von Hochkomma im SQL den exakten Feldnamen erzwingt. Ohne Angabe von Hochkomma ist dann die Feldnamenangabe Case Insensitive. Hochkomma werden da nur benötigt, wenn man Sonderzeichen im Feldnamen hat.
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.820 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: DataField: Das Feld wurde nicht gefunden - Umgang mit DataSources

  Alt 28. Apr 2016, 09:13
Bei FireBird ist das genauso:

select id ... liefert sowohl Felder id, Id, iD, ID

Zitat von sql:
select 'id' ...
liefert nur das Feld id
Markus Kinzler
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
760 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: DataField: Das Feld wurde nicht gefunden - Umgang mit DataSources

  Alt 28. Apr 2016, 09:15
@ jobo
Oh Mann... Du hattest recht! Es wurde eine ganz anderer Query-Inhalt übergeben. Wenn ich aus diesem ein Feld übergebe, dann funktioniert es. Bin nicht darauf gekommen, den Inhalt des DataSources in einem Grid zu überprüfen.

Vielen Dank!

Aber vielleicht habt Ihr trotzdem noch einen Tip für mich, wie Ihr Eure Datenbankzugriffe organisiert?

Gruß
Patrick


P.S.: Die Schreibweise hatte ich schon geprüft und Schreibfehler konnte ich auch ausschließen...
Patrick
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.028 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: DataField: Das Feld wurde nicht gefunden - Umgang mit DataSources

  Alt 28. Apr 2016, 09:41
Ok, damit hast Du schon mal ein Argument, Queries nicht mehrfach zu verwenden.


Ich arbeite grundsätzlich mit dynamischen Datasets, die immer anders befüllt werden, wenn mehrere Datasets gleichzeitig geöffnet sind, brauch ich natürlich mehrere davon.
Ansonsten noch ein ein paar Funktionen, die mir bestimmte Settings aus der DB holen. Da sind die Queries aber gekapselt. Geht alles nur via Funktionsparameter und Rückgabewert der Funktion. Im Bauch der Funktionen wird die Query erstellt und freigegeben.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf