Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Feld eine DB mit Daten (als Text) ergänzen, nicht ersetzen. (https://www.delphipraxis.net/15524-feld-eine-db-mit-daten-als-text-ergaenzen-nicht-ersetzen.html)

LuckyStrike4life 30. Jan 2004 10:42


Feld eine DB mit Daten (als Text) ergänzen, nicht ersetzen.
 
Morgen,

ja... ein neues schönes Problem.

In einer DB muss ein Feld mit Namen ergänzt werden.

Möglichkeit 1:
Ein z.B. DBMemo fragt das Feld ab und zeigt somit die aktuellen Einträge an. Der User schreibt seinen Namen und LZ dazu. Das ganze geht wieder in die DB zurück.

Schlechte Möglichkeit, denn es wäre für den User hier zu viel Arbeit. Kein Scherz, dass wurde mir gesagt. Die Namen werden momentan per DBLookupCombobox ausgewählt, und zusammen mit dem LZ und ein wenig Zeichen für die Formatierung in ein Edit Feld geschrieben.

Möglichkeit 2:
Der User sucht sich mit der DBLUCombobox sein Namen aus dieser wird in ein Feld geschrieben, wo schon die alten Daten des Feldes drin stehen - d.h. der Name und LZ wird nur rangehangen.
Das Feld wird dann wieder in die DB geschrieben.

Das ist aber nicht so einfach, denn wenn ich nun die Daten aus dem Feld in ein Memo laden lasse, und Automatisch dann den Namen aus der DBLUCombobox dort reinschreiben lassen möchte, wird ja alles überschrieben.

Habt ihr bessere Ideen und Lösungswege?

Robert_G 30. Jan 2004 11:06

Re: Feld eine DB mit Daten (als Text) ergänzen, nicht ersetz
 
Wie wär's wenn du das alles "zu Fuss" machst:
Daten in eine normal ComboBox
wenn ein Eintrag ausgewählt wurde -> abfragen ob ein neuer Eintrag angelegt werden muss oder ein bestehender aktualisiert werden soll.

OffTopic.
Da zu dem Programm vielleicht noch mehr Fragen kommen werden:
Was ist die "LZ"?, bzw. ist es nicht sinvoll in der User-Tabelle einen numerischen prim. Key anzulegen über den du Namen & LZ bekommst -> dann brauchst alle anderen Tabellen nur über dieses Feld verknüpfen...

LuckyStrike4life 30. Jan 2004 11:32

Re: Feld eine DB mit Daten (als Text) ergänzen, nicht ersetz
 
Zitat:

Zitat von GeorgeWNewbie
Wie wär's wenn du das alles "zu Fuss" machst:
Daten in eine normal ComboBox
wenn ein Eintrag ausgewählt wurde -> abfragen ob ein neuer Eintrag angelegt werden muss oder ein bestehender aktualisiert werden soll.

OffTopic.
Da zu dem Programm vielleicht noch mehr Fragen kommen werden:
Was ist die "LZ"?, bzw. ist es nicht sinvoll in der User-Tabelle einen numerischen prim. Key anzulegen über den du Namen & LZ bekommst -> dann brauchst alle anderen Tabellen nur über dieses Feld verknüpfen...

Es handelt sich um dBase Datenbanken, also keine Chance mit Auto-Inc und ähnlichen Dingen, leider - in der Maintabelle hab ich eine Spalte angelegt, dort wird für jeden Datensatz eine Nummer genieriert. Das aber vom Programm, nicht von dBase - dBase ist unfähig für Dinge dieser Art.

LZ == Laufzeichen, und in der Art wie eine IP Adresse von jedem der hier Arbeitet, muss zwingend immer angegeben sein, denn Namen können sich gleichen LZs nicht.

Zitat:

Daten in eine normal ComboBox
wenn ein Eintrag ausgewählt wurde -> abfragen ob ein neuer Eintrag angelegt werden muss oder ein bestehender aktualisiert werden soll.
Nein,
so gehts nicht. Die User wissen schon ob sie bei jemanden Mitfahren müssen oder nicht, dafür gibts dann ein neues Form - am unterem Rand sitzt ein Grid wo alle Datensätze angezeigt werden, die in Frage kommen (keine schon bestätigten oder abgelehnten).
Natürlich geschieht das über SQL Abfrage.

Ups, vielleicht meintest du das auch so - ob das Feld 'Mitfahrer' beschrieben werden muss, oder ergänzt werden soll, soll die Abfrage sein. Kein schlechter Ansatz, aber wie stellst du dir so eine Abfrage vor?

Eine normale Combobox ist auch nicht geeignet, denn die User können sich ändern, daher gibts ja eine extra Tabelle. So das es verwaltet werden kann.

LuckyStrike4life 30. Jan 2004 13:00

Re: Feld eine DB mit Daten (als Text) ergänzen, nicht ersetz
 
Ich hab mir eben mal wieder Gedanken gemacht - und vermutlich eine Lösung gefunden.

Hört sie euch an,
ich lasse das Feld der DB in ein Memo schreiben, das Memo setz ich auf Visible=False.

Sobald der User einen Namen gewählt hat, laß ich den Namen und das LZ in ein anderes EditFeld schreiben, so kann der User noch schauen ob alles okay ist.

Sobald er auf Abschicken klickt füge ich beide Felder zusammen in ein Memo, ebenfalls nicht sichtbar und laß das dann in die DB schreiben. Was sagt ihr? Vermutlich nichts :-D , Problem scheint gelöst zu sein.

Thx an GeorgeWNewbie, zumindest einer hat überhaupt was dazu geschrieben.

Robert_G 30. Jan 2004 13:06

Re: Feld eine DB mit Daten (als Text) ergänzen, nicht ersetz
 
:oops: Sorry, dass ich mich nicht wieder gemeldet habe -> bin gerade tierisch im Stress.

Frage:
Der User sieht ein Grid in dem alle anträge auf einen Leihwagen (war doch das Prog, oder?) aufgelistet sind.
Wenn er auch auf diese Tagung,... mitfahren will, klickt er auf den Eintrag und wählt seinen Namen aus der ComboBox.

wWenn ich das richtig verstanden habe dann:
Jetzt machst du eine Abfrage, ob sich dieser User schon dazu eingetragen hat.
wenn ja -> meckern
wenn nicht -> Insert auf die Tabelle

p.s.: mit ...
Zitat:

Zitat von GeorgeWNewbie
Daten in eine normale ComboBox

... meinte ich eine Abfrage aller User mit der du die ComboBox füllst.

LuckyStrike4life 30. Jan 2004 13:25

Re: Feld eine DB mit Daten (als Text) ergänzen, nicht ersetz
 
Zitat:

Zitat von GeorgeWNewbie
:oops: Sorry, dass ich mich nicht wieder gemeldet habe -> bin gerade tierisch im Stress.

Frage:
Der User sieht ein Grid in dem alle anträge auf einen Leihwagen (war doch das Prog, oder?) aufgelistet sind.
Wenn er auch auf diese Tagung,... mitfahren will, klickt er auf den Eintrag und wählt seinen Namen aus der ComboBox.

wWenn ich das richtig verstanden habe dann:
Jetzt machst du eine Abfrage, ob sich dieser User schon dazu eingetragen hat.
wenn ja -> meckern
wenn nicht -> Insert auf die Tabelle

p.s.: mit ...
Zitat:

Zitat von GeorgeWNewbie
Daten in eine normale ComboBox

... meinte ich eine Abfrage aller User mit der du die ComboBox füllst.

Schon richtig,
es geht allerdings nicht um Leihwagen sondern um Dienstwagen, aber das ist irrelevant.
Ansonsten:
Zitat:

Der User sieht ein Grid in dem alle anträge auf einen Leihwagen (war doch das Prog, oder?) aufgelistet sind.
Wenn er auch auf diese Tagung,... mitfahren will, klickt er auf den Eintrag und wählt seinen Namen aus der ComboBox.
genau so, und nicht anders ;).
Zitat:

Jetzt machst du eine Abfrage, ob sich dieser User schon dazu eingetragen hat.
wenn ja -> meckern
wenn nicht -> Insert auf die Tabelle
Das ist nicht wichtig :-D , ich hoffe die Anwender können das ganze soweit noch überblicken :) .

Robert_G 30. Jan 2004 13:28

Re: Feld eine DB mit Daten (als Text) ergänzen, nicht ersetz
 
Mit Abfrage meine ich ab es in der Tabelle schon einen Eintrag zu diesem Leihwagen/Tag von dem User gibt gibt.
Wenn du nicht meckern willst, kannst du ja per UPDATE den Timestamp oder sonst was aktualisieren.
Gibt es keinen Eintrag -> INSERT
(Ich dachte das war deine Frage :gruebel: )

LuckyStrike4life 30. Jan 2004 13:46

Re: Feld eine DB mit Daten (als Text) ergänzen, nicht ersetz
 
Ahso,
ja klar - aber so eine Funktion hab ich mit SQL schon ;).

Sie ist auch ungemein wichtig und würde sie nicht existieren, würde das Programm hier nicht anerkannt werden.

Soweit ist das Programm auch fertig, ich sitz jetzt nur noch an den kleinen Änderungswünschen - damit ich endlich Version 1.1 Abgeben kann und Nachts wieder besser schlafe :-D . Und mich natürlich den nächsten Scripten/Programmen widmen kann :( :-D .

Nein, meine Frage war wie ich in ein Feld wo schon was drin steht noch was dazu schreiben kann, die Lösung ist mir dann noch eingefallen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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