![]() |
den aktuellen Datensatz auswählen, und ins edit einfügen??
Hi
Habe folgendes Problem. Ich habe 2 Paradox tabellen: Fahrzeuge (Fahrgestellnummer, Kennzeichen, ..., Anfangskilometer,...) Fahrtenbuch(Datum, Kennzeichen, ..., Startkilometer, Endklilometer, ...) In der Tabelle Fahrtenbuch werden alle Fahrten aller Fahrzeuge gespeichert !! Das aktuelle Fahrzeug wird mit einer DBLookupCombo ausgewählt. Nun möchte ich die Startkilometer des Fahrzeuges automatisch in ein EditFeld einfügen. Startkilometer ist bei Leerer Tabelle Fahrtenbuch = die Anfangskilometer des Fahrzeuges aus der Tabelle Fahrzeuge, oder wenn ein Datensatz in der Tabelle Fahrtenbuch Vorhanden ist die letzten Endkilometer des Ausgewählten Fahrzeuges. Wie kann ich das Programmieren??? Wäre gut, wenn ihr mir helfen könntet, hab halt noch keine Ahnung vom Programmieren. The_Tremendous |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Hallo,
sind die unterstrichenden Felder deine Primärfelder? Wenn ja dann solltest Du das in der Fahrtenbuch DB ändern, da daran kein Datensatz eindeutig identifiert werden kann. So nun zu deiner Frage. Wenn Du mit Query arbeitest könnstest Du das darüber lösen und da du ja eh schon mit einer DBLookUpCombo arbeitest kannst Du die Verbindung zu der Fahrtenbuch DB nutzen und dir darüber das Edit füllen lassen. Ich würde die DBLookUpCombobox durch eine normale DBComboBox ersetzen. Dann verbindest Du diese mit der Table Fahrzeuge. Wenn Du dann eine Fahrzeug in der ComboBox auswählst, führst Du im OnChange-Ereignis eine Abfrage aus, die aus der Fahrtenbuch DB den entsprechenden Startkilometer ausliest.
SQL-Code:
Ich kann jetzt nicht erkennen ob du eine Verbindung zur Fahrtenbuch DB hast. Ich meine ein Feld wie Fahrzeug_ID. Dies wäre die ID des Fahrzeuges.
Select Startkilometer From Fahrtenbuch WHERE ID = :iID
ParamByName('iID).value:= //hier kommt dann die Verbindung zur Fahrzeug DB hin (ID o.s.) ExecSQL; |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
hm, also die Tabellen sind eigentlich über das Kennzeichen verbunden.
Wie soll ich das verstehn?? also dieses ID =: iID Zitat:
The Tremenodus |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Hallo,
was ich damit sagte wollte, du wählst ein Fahrzeug in der DBComboBox aus. In dem OnChange Ereignis führst Du den Code aus. Anstatt der ID wählst Du dann halt das Kennzeichen. Wenn du den Code ausgeführt hast, dann steht in dem Ergebnis der entsprechende DS und somit auch der Startkilometerstand. Um den dann noch in das Edit zu schreiben, must du nur das entsprechende Feld auslesen.
SQL-Code:
//das OnChange Ereignis
Kz: String; Kz:= Query1.FieldByName('Kennzeichen').asstring //kennzeichen von dem Fahrzeug aus CBox With Query1 Do Begin close; SQL.clear; SQL.ADD('Select Startkilometer From Fahrtenbuch WHERE Kennzeichen LIKE '+KZ+''); Open; end; Edit.Text:= Query1.FieldByName('StartKilometer').AsString; |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Das habe ich soweit jetz auch gemacht.
Wenn ich aber dann nen Datensatz in der Combo auswähle wird gesagt, das Feld Kennzeichen wurde nicht gefunden. ich habe das query über ne datasource mit der Tabelle Fahrzeuge verbunden. Und In dieser Tabelle ist das Feld Kennzeichen definitiv drinne. Was habe ich Falsch gemacht?? The-Tremendous |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
hallo,
wie heisst denn dein feld, wo das kennzeichen drin steht? raik |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Das Tabellenfeld in dem die Iennzeichen drin stehn heist Kennzeichen.
Gruß The_Tremendous |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
der code geht aber davon aus , das das feld in der tablle Fahrten buch steht
raik |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Also ich habe die 2 Paradox Tabellen:
Fahrzeuge (Fahrgestellnummer, Kennzeichen, Anfangskilometer, ...) Fahrtenbuch (FahrtenbuchNr, Datum, Kennzeichen, Startkilometer, Endkilometer,...) Somit steht in jeder der beiden Tabellen das Feld Kennzeichen. Über dieses Kennzeichen sollen alle Fahrten eines Autos im Fahrtenbuch mit der Tabelle Fahrzeuge verknüpft werden. Ich will nun die Startkilometer des Autos x beim eintragen einer Fahrt in das Fahrtenbuch automatisch ins feld editStartKilomter eingeben. Dabei muss ich beachten, ob in der Tabelle Fahrtenbuch schon eine Fahrt vom Auto x steht oder nicht. Wenn noch keine Fahrt vom Autox in der Tabelle Fahrtenbuch steht, dann soll der wert Anfangskilometer aus der Tabelle Fahrzeuge übernommen werden. Sollte in der Tabelle Fahrtenbuch schon Einträge des Austos x stehten, dann soll der davon letzte ausgewählt werden, und der wert des Feldes Endkilometer in das Editfeld eingetragen werden. Das Auto wird wie oben schon erwähnt mit einer Lookupcombo ausgewählt. Den Quellcode des Querys habe ich dann unter combolookupcloseup geschrieben, hoffe mal das das so richtig ist. Gruß The_Tremendous |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
ins onchange, wie oben beschrieben.
versuche es mal raik |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
onchange gibt es aber bei dblookup combos nicht, deshalb habe ich ja das closeup genommen. Meinst du das das deshalb nicht geht?? oder stimmt vielleicht was anderes nicht??
The_Tremendous |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
versuche mal das onexit
|
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
closeup sollte abe rauch funktionieren :gruebel:
setze mal haltepunkte auf
Delphi-Quellcode:
und gehe mal mit der maus über KZ ,was steht jetzt da drin?
With Query1 Do
raik |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Er gibt jetzt zwar keinen Fehler aus, aber das EditFeld ist trotzdem noch leer. Also hat er noch nichts ausgewählt.
Gruß, The_Tremendous *jetz ins Bettgehend und hoffend, das er morgen erfolgreicher ist :-)* |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Hallo The_Tremendous,
Nutzt die Funktionen der DBLookUpComboBox? Diese DBLCBox ist ja eigentlich dazu gedacht eine 1:1 Beziehung zwischen 2 DB dazustellen. Z.Bsp. läßt man sich der Box Namen anzeigen und in einer DBGrid die dazugehörigen Daten aus einer anderen DB. Du könntest die Box in ihrer vollen Funktionalität in deinem Fall nutzen (mir ist das aber zu kompliziert). Ich würde die DBLookupCombobox durch eine normale DBCombobox ersetzen, da hast du dann auch ein OnChange. Dann verknüpft Du die Datasource mit der Datasource für die DB Fahrzeuge. Nun sollten die Fahrzeuge in die DBCBox eingetragen werden. (Das kannst Du schon mal testen, wenn Du das Query auf Open True setzt) Wenn Du jetzt ein Fahrzeug in DBCBox auswählst, wird automatisch der Datensatzzeiger auf den entsprechenden Datensatz in deiner Abfrage gesetzt. Was du setzt nur noch machen must, ist das Feld Kennzeichen aus dem Ergebnis auslesen und die 2te Abfrage übergeben und da kommt der oben beschrieben Code ins Spiel und dann sollte es eigentlich gehen. |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Also ich habe jetzt die DBCombo mit der datasource2 verbunden. Die Datasource2 ist mit der Tabelle Fahrzeuge verknüpft.
Jetzt zeigt er in der Combo aber nur das erste Fahrzeug an und ich kann kein anderes auswählen. Was stimmt da nicht??? The_Tremendous |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Hi
Weil du das mit deiner 2. datasource verbunden hast (steht leider immer auf dem ersten datensatz... (zumindest wenn ich mir gerad den aufbau deiner form richitg vorstelle) Greetz Boombuler |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Hallo,
ich habe das ganze mal durchgespielt. Ich habe mir allerdings ne normal CBox genommen. Dann habe ich mit dem Code
Code:
im OnCreate Ereignis die Kennzeichen in die CBox geschrieben.
With Query1 Do
Begin Close; SQL.Clear; SQL.ADD('Select * From Fahrzeuge'); SQL.Open; //CBox füllen While Not EOF Do Begin CBox.Items.add('FieldByName('Kennzeichen').asString; Next; end; end; Zur Auswertung der CBox dann im OnChange-Ereignis den folgenden Code eintragen
Code:
Bei mir hat es so einwandfrei funktioniert.
var KZ: String;
begin KZ:= ComboBox1.Text; With Query2 DO Begin Close; SQL.Clear; SQL.Add('Select * From Fahrtenbuch.db WHERE Kennzeichen Like "'+KZ+'"'); Open; end; edit1.Text:= Query2.FieldByName('Startkilometer').AsString; //Hier wird der Wert eingetragen ShowMessage(Query2.SQL.Text); //Nur zu Testzwecken um den Inhalt der Abfrage zu testen end; Ich hoffe das hilft Dir jetzt weiter. |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Also erstmal viele Dank.
Aber: der erste Fehler kommt bei SQL.Open --> das Open kennt er net der zweite Fehler liegt hier irgendwo comboFahrzeugAuswahl.Items.add('FieldByName'('Kennzeichen').asString; [Fehler] UFahrtenbuchEingabe.pas(72): Operator oder Semikolon fehlt [Fehler] UFahrtenbuchEingabe.pas(72): Record, Objekt oder Klassentyp erforderlich Das waren die Fehler. Was Ist jetzt Falsch?? Ich habe das Query1 an dei Tabelle Fahrzeuge geknüpft und das Quer2 2 an die Tabelle Fahrtenbuch. Ist das richtig so?? The_Tremendous |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Also,
ich habe die TQuery Kompos aus der Sparte BDE verwendet. zu 1., mein Fehler ohne SQL selbsverständlich zu 2. Zitat:
Code:
Das sind typische Copy & Paste Fehler.
comboFahrzeugAuswahl.Items.add(FieldByName('Kennzeichen').asString);
So und nun versuch es nochmal. Kannst Du das alles nachvollziehen was ich da überhaupt geschrieben habe oder nimmst Du das alles so hin? |
Re: den aktuellen Datensatz auswählen, und ins edit einfügen
Liste der Anhänge anzeigen (Anzahl: 1)
Dei Fehler sind jetzt weg, wenn ich aber nun das Prog starten will kommt ein ErrorFenster.
Ich habe mal einen Screeshot davon gemacht, siehe Attachment: Der Fehler kommt nach dem close; The_Tremendous |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:11 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 by Thomas Breitkreuz