PDA

Vollständige Version anzeigen : UF-Textfelder mit Button automatisch ausfüllen


tobey_p
30.09.2009, 07:19
Hallo zusammen!

Nachdem ich jetzt schon das Forum ausgiebig durchforstet habe, aber leider keine passende Antwort gefunden habe, wollte ich euch mal um Rat fragen:

Ich habe ein Forumlar über dessen Vorauswahl man im entsprechenden UF selektierte Datensätze aufgezeigt bekommt. (UF als Endlos-Formular) Das ganze läuft im Rahmen einer Fertigstellungsübersicht für Projekte. Hier kann man pro Datensatz den Fertigstellungsgrad der Komponenten einstellen. (1 Datensatz=1 Komponente)

Da x Komponenten aber immer zu einer Baugruppe gehören, wollte ich eine Möglichkeit finden, um per Button-Klick den Fertigstellungsgrad aller Komponenten gleichzeitig bspw. auf 100% zu setzen. Momentan muß der User in jedem Datensatz mit Hilfe eines Kombifeldes den Fertigstellungsgrad manuell auswählen. Kostet natrüelich bei vielen Komponenten viel Zeit.

Heißt also, der Button muß in jedem Datensatz das Textfeld "fertigstellung" automatisch mit "100%" füllen. Aber nur für die Komponenten die zu der Auswahl aus dem HF passen. (sprich also zu dem entsprechenden baugruppen_key)

Ich hoffe, dass war jetzt nicht zu kompliziert beschrieben. Würd mich sehr freuen, wenn mir jemand einen Rat geben kann! Vielleicht über ein Code mit Hilfe von Insert into? Bin auf dem Gebiet leider noch nicht so firm...

Vielen Dank schon einmal!

sw-blitz007
30.09.2009, 07:30
Hallo,

das kannst Du folgendermaßen lösen, wenn ich Dich richtig verstanden habe:


UPDATE tblKomponenten
SET Fertigstellung = 100
WHERE tblKomponenten.Verknüpfungsschlüssel = Hauptformular.Verknüpfungsschlüssel

tobey_p
01.10.2009, 11:14
Hallo sw-blitz007,

vielen Dank für deine Antwort!

Hab das jetzt folgendermaßen versucht zu lösen:



Private Sub button_fertigkomplett_Click()

msgtext = "Wollen Sie die ausgewählte Baugruppe wirklich auf 100% setzen?"

antwort = MsgBox(msgtext, vbYesNo + vbDefaultButton2)

If antwort = vbNo Then Exit Sub

Update usnsys_proj
Set usnsys_fertigstand = "Fertigstellung 100%"
Where usnsys_proj.sys_key = Me!sys_key And usnsys_proj.proj_key = Me!proj_key

Me.Parent![Produktionsplanung UF Fertigprozent].Requery


End Sub





Leider bleibt er bei diesem Code mit der Fehlermeldung "Complie Error: Variable not defined" bei "usnsys_proj" (Name der Tabelle) hängen. Kannst Du mir sagen, was ich noch berücksichtigen muß? Ist der Syntax des restlichen Codes denn so ok?

Vielen Dank noch einmal!

Atrus2711
01.10.2009, 11:46
Hi,

SQL kannst du in VBA nicht einfach reinschreiben. Das muss ausgeführt werden.

currentdb.execute "Update usnsys_proj " _
& "Set usnsys_fertigstand = 'Fertigstellung 100%' " _
& "Where usnsys_proj.sys_key = " & Me!sys_key & " AND " _
& "usnsys_proj.proj_key = " & Me!proj_key

und das auch nur, wenn sys_key und proj_key Zahlenfelder sind und der fertigstand ein Textfeld.

tobey_p
01.10.2009, 12:32
Danke Atrus,

funktioniert super!

Eine letzte Frage zu dem Thema: wie muß ich den Syntax verändern, wenn ich folgenden Zusatz in den "Set"-Teil einfügen möchte:



[usnsys_letzteaenderung] = Now

[usnsys_aenddurchbenutzer] = Environ("Username")



Danach schließ ich das Thema auch sofort, versprochen! ;)

Vielen Dank nochmal!

Atrus2711
01.10.2009, 13:08
Naja, das wäre doch Transferleistung, oder?

currentdb.execute "Update usnsys_proj " _
& "Set usnsys_fertigstand = 'Fertigstellung 100%', " _
& "[usnsys_letzteaenderung] = #" & Format(Now(),"yyyy-mm-dd hh:nn:ss") & "#, " _
& "[usnsys_aenddurchbenutzer] = '" & Environ("Username") & "' " _
& "Where usnsys_proj.sys_key = " & Me!sys_key & " AND " _
& "usnsys_proj.proj_key = " & Me!proj_key

tobey_p
02.10.2009, 07:35
Hallo nochmal,

leider bekomme ich bei diesen beiden Zeilen nun immer die Fehlermeldung "Run-time error 3075 Missing operator"....



& "[usnsys_letzteaenderung] = #" & Format(Now(),"yyyy-mm-dd hh:nn:ss") & "#, " _
& "[usnsys_aenddurchbenutzer] = '" & Environ("Username") & "' " _




Sorry, ich bin wirklich noch sehr wackelig auf den Füssen, was den Syntax in vba betrifft. Könntet ihr mir da nochmal bei helfen, was in dem Ausdruck fehlt?

Nochmal besten dank für eure Unterstützung!

Atrus2711
02.10.2009, 07:47
Hi,

setz da mal einen Haltepunkt, und lass dir beim Anhalten des Codes die Werte anzeigen, die VBA da dynamisch dazuspielt (also Format(...), Environ(...) sowie die Formularfelder Me!... ).

Die Anweisung sieht so eigentlich ok aus, vorausgesetzt dass

usnsys_fertigstand ein Textfeld ist,
usnsys_letzteaenderung ein Datumsfeld ist
usnsys_aenddurchbenutzer ein Textfeld ist
sys_key ein Zahlenfeld ist und
proj_key ein Zahlenfeld ist.


Vermutlich ist eines der ausgelesenen Formularfelder leer.

Du könntest auch Den ganzen Code zwischen "Update..." und "Me!proj_key" mal kopieren und beim Anhalten im Direktbereich ausgeben. Dann wird der komplett "durchgerechnet" (evaluiert). Kopiere den mal in eine Abfrage, und schau dir diese an. Da wird irgendwo was fehlen.

tobey_p
02.10.2009, 10:39
Hi Atrus,

diese Debug-Prozedur habe ich leider ebenfalls noch nicht so richtig drauf.

Ich habe mir jetzt nicht anders zu helfen gewußt als das Ganze so zu lösen:



CurrentDb.Execute "Update usnsys_proj " _
& "Set usnsys_fertigstand = 'Fertigung 100%'" _
& "Where usnsys_proj.sys_key = " & Me!sys_key & " AND " _
& "usnsys_proj.proj_key = " & Me!proj_key

CurrentDb.Execute "Update usnsys_proj " _
& "Set usnsys_letzteaenderung = #" & Format(Now(), "yyyy-mm-dd hh:nn:ss") & "# " _
& "Where usnsys_proj.sys_key = " & Me!sys_key & " AND " _
& "usnsys_proj.proj_key = " & Me!proj_key

CurrentDb.Execute "Update usnsys_proj " _
& "Set usnsys_aenddurchbenutzer = '" & Environ("Username") & "' " _
& "Where usnsys_proj.sys_key = " & Me!sys_key & " AND " _
& "usnsys_proj.proj_key = " & Me!proj_key





Bin mir natürlich im klaren, dass das keine elegante Lösung ist. Aber funktioniert zumindest! Hoffe, ich finde bald die Zeit, mein gefährliches Halbwissen mal strukturiert und gezielt aufzuarbeiten... ;)

Euch nochmal vielen Dank für eure Antworten und Geduld!

maikek
02.10.2009, 11:09
Hi, wenn das funktioniert, gibt es eigentlich nur einen Grund, warum die Gesamtanweisung nicht ging, du hast vermutlich hier das Komma vergessen:
& "Set usnsys_fertigstand = 'Fertigstellung 100%', "
maike

tobey_p
02.10.2009, 12:28
Oh mann, danke maike - genau das wars!

Vielen Dank euch allen!

Atrus2711
02.10.2009, 12:31
@tobey:

#6 Kopieren hätte gereicht, oder? ;)

Zum Direktfenster: das Ding ist Gold wert zum Debuggen. Wenn der Code anhält, kannst du da beliebige Ausdrücke eingeben und Enter drücken, dann werden die mit den aktuellen Werten ausgerechnet.

? "Hallo " & "Welt " & Now()
Hallo Welt 02.10.2009 13:31.43