| |
Anzeigen |
|
|
Social Bookmark Script |
|
|
|
 |
dbForm - geänderten Wert auslesen |
Olaf
Grünschnabel
Dabei seit: 05.07.2010
Beiträge: 7
Einsatzart von VDF: privat Anwenderstatus: DB-Umsteiger Herkunft: D
 |
|
| dbForm - geänderten Wert auslesen |
 |
Wie lese ich ein geändertes dbForm-Element aus? In der Tabelle steht noch der alte Wert, ebenso in Field_Current_Value. Das Field_Changed_State steht auf true. In meiner view steht der geänderte Wert.
|
|
05.07.2010 15:35 |
|
|
Peter Bosch
Mitglied
 
Dabei seit: 04.09.2007
Beiträge: 30
Einsatzart von VDF: gewerblich Anwenderstatus: VDF-Entwickler Herkunft: Wien
 |
|
Field_Current_Value sollte den neuen Wert zeigen.
Du kannst aber auch Get Value of xxxx to yyyy machen, wobei xxxx der Name der dbForm ist.
LG, Peter
|
|
06.07.2010 11:20 |
|
|
Olaf
Grünschnabel
Dabei seit: 05.07.2010
Beiträge: 7
Einsatzart von VDF: privat Anwenderstatus: DB-Umsteiger Herkunft: D
Themenstarter
 |
|
Hallo Peter,
vielen Dank für die schnelle Hilfe.
Die Variante über das Objekt (get value of o...) bringt mir das gewünschte Ergebnis. Warum es mit field_current_value nicht geht bleibt offen.
LG Olaf
|
|
06.07.2010 12:57 |
|
|
Pleitgen
Grünschnabel
Dabei seit: 26.03.2009
Beiträge: 4
Einsatzart von VDF: gewerblich Anwenderstatus: Programmierer Herkunft: Deutschland
 |
|
Hallo Olaf,
wenn die dbForm auf ein Feld referenziert, welches eine Relation zu einer Eltern-Tabelle hat, solltest du
- file_field_current_value nutzen...
- den eltern-satz im DD-Buffer stehen haben (dabei natürlich auf constraints achten!)
gruß henrik
|
|
07.07.2010 09:19 |
|
|
Olaf
Grünschnabel
Dabei seit: 05.07.2010
Beiträge: 7
Einsatzart von VDF: privat Anwenderstatus: DB-Umsteiger Herkunft: D
Themenstarter
 |
|
Hallo Henrik,
das file_field_current_value hatte ich auch schon ohne Erfolg probiert. Da ich ein constrain verwendet habe vermute ich das Problem dort.
Anhand eines kleinen Programms probiere ich gerade verschiedene Varianten durch. Im Debugger ist es aber noch nicht komfortabel.
Wann bzw. wie wird der Inhalt einer Form aktualisiert(Variable sValue in oForm1, über Button erfolgt Aufruf procedure, diese ändert sValue, nun soll der geänderte Wert angezeigt werden).
Gruß Olaf
|
|
07.07.2010 16:27 |
|
|
Olaf
Grünschnabel
Dabei seit: 05.07.2010
Beiträge: 7
Einsatzart von VDF: privat Anwenderstatus: DB-Umsteiger Herkunft: D
Themenstarter
 |
|
P.S.
Mit set value of oForm1 to sValue geht es natürlich. Gibt es noch andere Möglichkeiten?
Gruß Olaf
|
|
07.07.2010 17:07 |
|
|
abraxas
Doppel-As
Dabei seit: 23.07.2007
Beiträge: 107
Einsatzart von VDF: gewerblich Anwenderstatus: VDF-Entwickler Herkunft: Frauenfeld (CH)
 |
|
dbForms welche an einen Server (eine DataDictionary Objekt) gebunden sind, sollte man nur mit den field_* oder file_field_* Methoden bewirtschaften, sei es das Lesen oder auch das Setzen eines Wertes. Das muss grundsätzlich funktionieren - Wenns nicht geht, dann ist irgendwas faul oder falsch verbunden...
Die Werte im DD werden nachgeführt, wenn das Feld verlassen wird.
Es gibt den DataDictionary Inspector, den man innerhalb einer View aufrufen kann und mit dem Du die von den verbundenen DD vorgehaltenen Werte inspizieren kannst. Du siehst auch, welche Objekte (das sind dann die DEO - DataEntry Object) mit dem DDO (DataDictionary Objekt) verbunden sind etc.
Use Dd_debug.dg // im Projekt - dort wo auch die Use XXX.VW sind
Danach solltest Du in der Lage sein, in deinem dbView mittels Ctrl+D den inspector aufzurufen.
HTH, Paolo
__________________ =================
Abraxas Informatik AG
Schweiz
=================
|
|
08.07.2010 11:01 |
|
|
Olaf
Grünschnabel
Dabei seit: 05.07.2010
Beiträge: 7
Einsatzart von VDF: privat Anwenderstatus: DB-Umsteiger Herkunft: D
Themenstarter
 |
|
Danke für die Infos. Den Inspector hatte ich auch schon mal getestet - ein wirklich sehr hilfreiches Instrument.
Ein dbList und ein dbGrid im gleichen Programm verhalten sich unterschiedlich(Index in der Grid unbeachtet). Es gibt noch mehr spannende Unterschiede.
Kann ich einen Programmcode selbst variabel gestalten?
z.B. send find of hoDD GT 1
wobei das Wort "GT" sozusagen eine Variable wäre, die verschiedene Werte annehmen kann (EQ;GT;..).
Gruß Olaf
|
|
08.07.2010 22:04 |
|
|
abraxas
Doppel-As
Dabei seit: 23.07.2007
Beiträge: 107
Einsatzart von VDF: gewerblich Anwenderstatus: VDF-Entwickler Herkunft: Frauenfeld (CH)
 |
|
der 1te Parameter der Methode "find" ist ein integer. Die erkannten Werte sind sind von 0 bis 7.
lt,le,eq,ge,gt,next_record, first_record,last_record, wobei lt=0 und last_record=7
Du kannst also einen "integer iMode" benutzen und ihn mit z.b. 4 abfüllen und dann mit "send find of XXX iMode 1" den Find ausführen. Dito geht auch für den index (den 2ten Paramter von "send find"
Gruss, Paolo
__________________ =================
Abraxas Informatik AG
Schweiz
=================
|
|
09.07.2010 08:09 |
|
|
Olaf
Grünschnabel
Dabei seit: 05.07.2010
Beiträge: 7
Einsatzart von VDF: privat Anwenderstatus: DB-Umsteiger Herkunft: D
Themenstarter
 |
|
Klappt sehr schön, man kann die Integer gleich aus einem radio übernehmen.
Aus anderen Sprachen kenne ich Makro-Variablen, d.h. man kann kompletten Code ersetzen. In diesem Fall also auch das send oder das find durch eine Zeichenkette aus einer Makro-Variablen. Geht das auch in VDF?
sformat() geht wohl nur für Daten.
Läßt sich die Hintergrundfarbe von checkbox ändern? Der Text geht ja, aber die Box selbst?
Gruß Olaf
|
|
09.07.2010 11:07 |
|
|
abraxas
Doppel-As
Dabei seit: 23.07.2007
Beiträge: 107
Einsatzart von VDF: gewerblich Anwenderstatus: VDF-Entwickler Herkunft: Frauenfeld (CH)
 |
|
...so richtig verstehe ich Dein Anliegen nicht.
DataFlex kenn auch Makros. Man könnte zum Beispiel eine Befehlsfolge als Makro hinterlegen.
| code: |
1:
2:
3:
4:
5:
|
#COMMAND MachMaHin
showln "ACHTUNG"
send find of !1 !2 !3
showln "FERTIG"
#ENDCOMMAND |
|
Kannst Du dann einfach im Code benutzen
| code: |
1:
|
MachMaHin XXXX 1 1 |
|
(Wobei XXXX das Objekt-Handle ist, das den send Find erhält)
Aber so richtig erwärmen könnte ich mich dafür nicht. Da gibts doch eleganteres...
Gruss, Paolo
__________________ =================
Abraxas Informatik AG
Schweiz
=================
|
|
09.07.2010 17:04 |
|
|
Olaf
Grünschnabel
Dabei seit: 05.07.2010
Beiträge: 7
Einsatzart von VDF: privat Anwenderstatus: DB-Umsteiger Herkunft: D
Themenstarter
 |
|
Ich möchte die case-Anweisungen sparen, da sich immer nur bestimmte Stellen im Code ändern.
Send <!1> of hoDD <iAttribut> <iIndex>
1: find, request_find, Find_By_Recnum, ...
Den jeweiligen Text könnte man dann in einem String übergeben.
Ein altes Beispiel:
cJAHR="2010"
cNAME = "C:\TEST\&cJAHR\USER\...\TEST.DAT"
use &cNAME
delete &cNAME
copy &cNAME ......
Gruß Olaf
|
|
09.07.2010 18:29 |
|
|
Peter Bosch
Mitglied
 
Dabei seit: 04.09.2007
Beiträge: 30
Einsatzart von VDF: gewerblich Anwenderstatus: VDF-Entwickler Herkunft: Wien
 |
|
| RE: dbForm - geänderten Wert auslesen |
 |
Wie hast du denn die dbForm geändert?
Mit Set value? Dann müsstest du auch noch den Changed_state auf True setzen - oder beides kombiniert mit dem Command
Set Changed_Value to xxx
Vielleicht war das dein Problem?
LG, Peter
|
|
20.07.2010 14:50 |
|
|
|
|
|
 |
|