![]() |
dbedit feld und manuelle eingabe
moin,
nachdem ich meine hürden der datenbank und dbcombobox umschifft habe nun wieder ein problem, das es zu lösen gilt :wink: Aber erstmal zum programm.. Ich habe eine form in welcher sich 1 dblookupcombobox und 5 dbedit felder befinden. über adoconnection, adostoredproc und datasource fülle ich die dblookupcombobox und automatisch werden die db edit felder ausgefüllt... Die werte in den dbeditfeldern werden nur für berechnungen benötigt!!! Ich möchte keine Veränderungen an der Datenbank vornehmen!!! Die dbeditfelder sind für das schreiben gesperrt (readonly=true) und sind ebenfalls net markierbar (enabled=false). 1. über das anklicken einer checkbox will ich nun in die dbedit felder manuell etwas eingeben können (if checkbox checked dbedit1...5.enabled; readonly=false) das problem ist, dass er mir dann automatisch in der datenbank herumfuhrwerkt und versucht die daten in dieser zu verändern, das soll er aber net Da steht dann: die update berechtigung für... wurde verweigert. Wie kann ich das realisieren, dass ich über die dbeditfelder andere, also manuelle daten in den dbeditfeldern aufführe? 2. kann ich wenn die option enabled=true ist die schriftfarbe in den dbeditfeldern ändern? das grau ist ja net so schön.. lg andreas |
Re: dbedit feld und manuelle eingabe
Hallo Andreas,
warum willst Du in ein DBEdit-Feld etwas reinschreiben, daß nicht an die Datenbank übertragen werden soll? :gruebel: Ein Möglichkeit wäre mit Cached Update zu arbeiten. Da kannst Du alle Änderungen, die dann zunächst nur lokal in der Datenmenge ausgefühert werden, wieder verwerfen. |
Re: dbedit feld und manuelle eingabe
also bei den dbeditfeldern stehen :höhe, breite, tiefe, bezeichnung1, bezeichnung2.
diese werte werden aus der datenbank übernommen. wenn nun jemand einen artikel eingeben will, der nicht in der datenbank hinterlegt ist, eingeben möchte, soll er dafür die vereits vorhandenen dbeditfelder nutzen können... und die werte die in den dbeditfeldern stehen, sollen später für berechnungen und ganz viel später dann für eine Druckausgabe herhalten das sollte eigentlich der grund sein diese editfelder zu nutzen, mehr will ich damit nicht anstellen |
Re: dbedit feld und manuelle eingabe
Dann mußt Du die Datenbank-Tabelle erst mal in den Editiermodus versetzen. Beim Einfügen eines neuen Datensatzes mit der Methode Append.
|
Re: dbedit feld und manuelle eingabe
Zitat:
Die Daten aus der Stored Proc musst du per Sourcecode in die Edit Felder übertragen:
Delphi-Quellcode:
ADOstoredProc1.Open;
EditBreite.text := ADOstoredProc1.FieldByName('Breite').AsFloat; ... |
Re: dbedit feld und manuelle eingabe
ne so mein ich das net
mal angenommen in der dblookupcombobox steht Schrank1, Schrank2, Schrank3 Wenn ich nun schrank2 anwähle übernimmt er in den dbeditfeldern: dbedit1[bezeichnung] : Eckschrank dbedit2[material] : Kiefer dbedit3[hoehe in mm] : 1500 dbedit4[breite in mm]: 2000 dbedit5[tiefe in mm] : 400 Mal angenommen ich will jetzt einen Schrank4 der NICHT in die db eingefügt werden soll bearbeiten. Dann möchte ich meine checkbox anklicken, und in die dbedit felder z.B. eintragen: dbedit1[bezeichnung] : kleiderschrank dbedit2[material] : wurmstich dbedit3[hoehe in mm] : 9876 dbedit4[breite in mm]: 1234 dbedit5[tiefe in mm] : 897 Diese werte brauche ich dann erstmal um zu sehen was für ein volumen die schränke haben.... x:=edit3 y:=edit4 z:=edit5 v:=x*y*z so mit dem volumen stell ich dann weitere berechnungen an... ??? versteht ihr jetzt was ich meine ??? |
Re: dbedit feld und manuelle eingabe
Zitat:
Wenn das so ist, kannst Du eigentlich nicht so herangehen, wie Du es getan hast, sondern es gibt zwei Möglichkeiten: a) Du benutzt unabhängige Controls (DBEdit und Edit) für die verschiedenen Zwecke. Diese könntest Du ja auch je nach Programmzustand sichtbar und unsichtbar machen. b) (m.E. besser): Du benutzt gar keine DBEdits, da Du ja genau die Funktionalität, die sie eigentlich bieten – nämlich den live-Kontakt zur DB –, nicht nutzen möchtest. Besser wäre es, nur Edits zu benutzen und diese "manuell", d.h. von Deinem Programm füllen zu lassen, also z.B. im OnChange der Lookup-Komponente etwas wie
Code:
usw.
Edit1.Text := table1.Feld1.AsText;
Edit2.Text := table1.Feld2.AsText Hoffe das hilft Urs P.S. Du kannst die Farben des Edits nicht in Abhängigkeit von einer Eigenschaft wie readonly ändern. Aber Du kannst in dem Moment, in dem sich der Zustand ändert (z.B. Button "manuelle Eingabe") die Farben von Hand ändern. Sollte kein Problem sein. |
Re: dbedit feld und manuelle eingabe
Sorry, war ein Cross-Post.
Aber shmia hat Recht. Das ist genau das was Du brauchst. Wenn Du Deinen Schrank aus der DB auswählst, werden dessen Daten in die TEdit-Komponenten eingelesen, von wo aus Du die weiteren Berechnungen ausführen kannst. Wenn Du einen "neuen" Schrank bearbeiten willst, kannst Du die Daten ebenfalls in die TEdits schreiben, und die DB kriegt nichts davon mit. MfG Urs |
Re: dbedit feld und manuelle eingabe
danke erstmal ich teste das mal aus ;)
|
Re: dbedit feld und manuelle eingabe
Aber du kannst doch auch die Daten solange in der Datenbank speichern, wie du sie bearbeitest. Und hinterher wieder löschen, oder nicht.
Oder aber eine zweite Datenbank in der die Vom Benutzer eingegebenen Datensätze gespeichert werden. Ich weiß ja nicht warum oder wofür das ist. Sind ja auch nur Vorschläge. :roll: mfg freak |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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 by Thomas Breitkreuz