Adress-verwaltung (Grundsatz)...

Übergeordnete Themen zum gesamten Paket passend
Antworten
Adrian
Junior Member
Beiträge: 18
Registriert: 11. September 2010, 10:10
Kontaktdaten:

Adress-verwaltung (Grundsatz)...

Beitrag von Adrian »

Hallo zusammen

Ich habe mich wieder an mein Projekt gesetzt und habe mal eine Grundsatz-Frage, auch was in Windev einfacher geht.

In der unteren Maske habe ich eine Mitarbeiter-Verwaltung.

Erfassen / Löschen ist klar.

Wie setzt Ihr das ändern um?

- Sollte dies auch über ein Button und dann über eine 2te Maske umgesetzt werden
- Direkt die Felder anpassen und am Schluss auf Speichern oder Rückgängig klicken? (wie sieht dies bei WinDev mit dem sperren des Datensatzes aus?)
- noch ein Button (Aendern) erstellen und beim raufklicken die Felder unten erst dann aktivieren? (wie wäre dies einfach umzusetzen, oder muss jedes Feld einzeln aktiviert werden?)

Ich weiss, betreffend der Umsetzung gibt es wahrscheinlich kein richtig oder falsch, doch was ist der für Windev richtigere Weg?

Würde mich mehr so Eure Meinung darüber interessieren.

2 zusatzfragen:

- Beim aufmachen der Maske sollte der Cursor direkt im Feld Suchbegriff stehen, habe da schon einiges versucht, doch noch keinen Erfolg gehabt.
- Wenn ich auf alle Mitarbeiter klicke, sollte in der tabelle alle eben alle Mitarbeiter erscheinen. Auch da habe ich schon einiges mit Query versucht, z.B. als OR mit dem pSearch = NULL etc. doch klappte dies auch nicht.

ich weiss, einige Prinzipielle Fragen, bin aber sicher, dass die Diskussion es dem Einen oder Anderen was bringen könnte.

Adrian
Unbenannt.JPG
Unbenannt.JPG (73.47 KiB) 3540 mal betrachtet

Herbert
Site Admin
Beiträge: 529
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Kontaktdaten:

Re: Adress-verwaltung (Grundsatz)...

Beitrag von Herbert »

Es gibt alle Lösungen. Du pogrammierst das, was du willst.

Ich setze eine globale Variable ein (in den global declarations des Adressfensters), die auf true kommt, sobald man ändert.
Code im Fenster der Adresse (whenever modifying...)

Code: Alles auswählen

IF gbMod=False THEN
	IF HLockRecNum(ZLAD,hCurrentRecNum,hLockWrite) THEN
		gbMod=True
	ELSE
		Error("Jemand Anderes besetzt diese Adresse!")
	END
END
Aenderungen sind bei mir immer im selben Fenster.
Will jemand anderes in derselben Adresse ändern ist so der Datensatz gesperrt und eine Meldung erscheint.
Hier braucht es dann noch kleine Tricks, um nicht beteiligte Felder von der Aenderung auszunhemen.
Falls das Fenster beim Speichern offen bleibt, die Variable auf false setzen und den Schreibschutz wegnehmen.
Es kommt auch darauf an, ob die Felder aus einem Query kommen oder aus der Tabelle verlinkt sind.

Zu den Zusatzfragen:
SetFocus(Element)
Whenever modifying Cbox_... dort kommt der Code hinein, die Tabelle neu aufzufüllen.
Ich mach das mit einer lokalen Prozedur, welche einen Query startet und je nach Zustand der Cbox alle oder nur einen anzeigt.

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: Adress-verwaltung (Grundsatz)...

Beitrag von satmax »

- Wenn ich auf alle Mitarbeiter klicke, sollte in der tabelle alle eben alle Mitarbeiter erscheinen. Auch da habe ich schon einiges mit Query versucht, z.B. als OR mit dem pSearch = NULL etc. doch klappte dies auch nicht.
Ich arbeite mit MS SQL und Query, wenn ich meine Query Parameter einfach vor der Abfrage nicht setzte werden alle Datensätze angezeigt:

Ist EDT_SucheArtikelbezeichnung leer werden alle gezeigt, sonst nur die, die, die den Teilstring aus EDT_SucheArtikelbezeichnung enthalten

Code: Alles auswählen

...
IF not TmEmpty(EDT_SucheArtikelbezeichnung) THEN	QRY_SucheArtikel.PARAM_Art_Bezeichnung = EDT_SucheArtikelbezeichnung
...
TableDisplay(TABLE_QRY_SucheArtikel,taReExecuteQuery) // taStart)  //taReExecuteQuery 
...

Auszug aus meinem Query:

Code: Alles auswählen

 WHERE (ART_CODE LIKE %{PARAM_Art_Code}% 
 OR ART_BEZ LIKE %{PARAM_Art_Bezeichnung}%)
 AND ART_Laenge = {PARAM_Art_Laenge}
 AND ART_Breite = {PARAM_Art_Breite}
 AND ART_Hoehe = {PARAM_Art_Hoehe}
AND ART_Hoehe < {PARAM_Art_HoeheKleiner}

Adrian
Junior Member
Beiträge: 18
Registriert: 11. September 2010, 10:10
Kontaktdaten:

Re: Adress-verwaltung (Grundsatz)...

Beitrag von Adrian »

Nun bei HFSQL wird eben bei leeren Parameter nichts angezeigt. Muss schauen, wass ich da für einen Trick anwenden kann.

Betreffend dem Focus:
Dies ist schon korrekt und läuft auch in einem Fenster, mit Planes scheint dies nicht zu klappen:
Unbenannt.JPG
Unbenannt.JPG (57.92 KiB) 3503 mal betrachtet
Wenn ich auf Kundenkartei klickte, dies ist im Planes1 sollte das Suchfeld den Focus bekommen. Muss da auch noch "spielen"

satmax
Senior Member
Beiträge: 312
Registriert: 24. September 2015, 10:05
Wohnort: Biberbach, Austria
Kontaktdaten:

Re: Adress-verwaltung (Grundsatz)...

Beitrag von satmax »

Du darfst

QRY_SucheArtikel.PARAM_Art_Bezeichnung

gar nichts zuweisen, auch keinen Leerstring!

Auch das taReExecuteQuery ist wichtig:

TableDisplay(TABLE_QRY_SucheArtikel,taReExecuteQuery) // taStart) //taReExecuteQuery

Zum Test, rufe die Zeile

TableDisplay(TABLE_QRY_SucheArtikel,taReExecuteQuery)

2x unmittelbar hintereinander auf.

Das mit planes und setfocus klappt 100%, dort wo du die planes auf die Seite Kundenkartei umschaltest mach auch ein setfocus(EDT_Suchbegriff).

Planes sind überhaupt eine geile Sache, unscheinbar aber perfekt! :)

Antworten