PDA

Vollständige Version anzeigen : Daten von Formular in Tabelle


Hama
24.06.2003, 10:31
hi, ich habe ein Formular, das von einer Abfrage mit Daten versorgt wird. Ist es irgendwie möglich die Daten, die ich momentan im Formular habe in einer Tabelle als "letzten" Eintrag zu speichern ?

thx fpr help

hama

WMS
24.06.2003, 10:42
glSqlStr = "INSERT INTO DeineTabelle( Feld1,Feld2... ) "
glSqlStr = glSqlStr & "SELECT " & Chr(34) & FormFeld1 & Chr(34) & " AS Feld1, " & FormFeld2 & " AS Feld2" ......

DoCmd.SetWarnings False
DoCmd.RunSQL glSqlStr
DoCmd.SetWarnings True

chr(34) bei Textfeldern

two-balu1
24.06.2003, 12:18
@WMS:
Hi WMS,
habe ein ähnliches Problem, und habe Deinen Code hier geklaut...
Funzt aber nicht. :eek:
Habe eine Tabelle"T_ReklamationsDetails" und eine Spalte "ReklamationsDetailsnr"
In meinem Formular habe ich das Feld "Z" von einer Abfrage, dessen Inhalt in die Spalte "ReklamationsDetailsnr" eingetragen werden soll.
Aber mit
Private Sub Z_AfterUpdate()
glSqlStr = "INSERT INTO T_ReklamationsDetails(ReklamationsDetailsnr) "
glSqlStr = glSqlStr & "SELECT " & Chr(34) & Z & Chr(34) & " AS Z, "

DoCmd.SetWarnings False
DoCmd.RunSQL glSqlStr
DoCmd.SetWarnings True

End Sub
funzt das net! :(
Kannst Du mir sagen wo der Fehler liegt?

racoon0506
24.06.2003, 12:22
Vielleicht an den chr(34) in dem Ausdruck.... (soll nur, wenn Z ein Textfeld ist. Bei Zahl ist das überflüssig)

WMS
24.06.2003, 12:33
in deinem Beispiel sind 2 Kleinigkeit unkorrekt:

Code:
Private Sub Z_AfterUpdate()
glSqlStr = "INSERT INTO T_ReklamationsDetails(ReklamationsDetailsnr) "
glSqlStr = glSqlStr & "SELECT " & Chr(34) & Z & Chr(34) & " AS Z, "


- Hinter der Datei "T_ReklamationsDetails" muss ein Leerzeichen stehen

- das Komma hinter dem Z muss weg

Der Inhalt von Z muss ein String sein, sonst musst du beide chr(34) weglassen

two-balu1
24.06.2003, 12:41
Hi ihrs:
habe Euren Rat befolgt und es mit diesem Code versucht:
Private Sub Z_AfterUpdate()

glSqlStr = "INSERT INTO T_ReklamationsDetails (ReklamationsDetailsnr) "
glSqlStr = glSqlStr & "SELECT " & Z & " AS Z "

DoCmd.SetWarnings False
DoCmd.RunSQL glSqlStr
DoCmd.SetWarnings True

End Sub
Leider funzt es net: er trägt den Wert (Zahl) nicht in die Tabelle ein.

Die Abfrage(Quelle) erzeugt eine fortlaufende Nummer und ist deshalb "schreibgeschützt". Meint Ihr, es könnte daran liegen, das Access den Wert nicht in die Tabelle eintragen kann?

racoon0506
24.06.2003, 12:44
Spielt vielleicht bei der Lösung keine Rolle, wüsste ich trotzdem gern:
Ist ReklamationsDetailsnr in der Tabelle etwa ein Feld vom Typ Autowert?

WMS
24.06.2003, 12:47
... wenn man nicht auf alles achtet...? :confused:

glSqlStr = "INSERT INTO T_ReklamationsDetails (ReklamationsDetailsnr) "
glSqlStr = glSqlStr & "SELECT " & Z & " AS ReklamationsDetailsnr"

two-balu1
24.06.2003, 12:49
Ist ReklamationsDetailsnr in der Tabelle etwa ein Feld vom Typ Autowert?

Nein der Datentyp ist "Zahl" Long Integer :)

two-balu1
24.06.2003, 13:16
Hmpf...
ich habe es auch mit dem neuen Code Probiert...
Fehlanzeige! :bawling:

Ich habe Euch mal einen kleinen Teil gepostet:
Wenn man das Formular sfrm_ReklamationsDetails öffnet und die Datensätze mittels der Butrtons rechts kopiert, bekommt man auf der linken Seite zwar das Feld der Abfrage mit Zahlen gefüllt, aber nicht das der Tabelle.
(achtet erstmal nicht auf die Fehlermeldung nach dem Kopieren)
es wäre echt nett wenn sich einer die Zeit nehmen könnte, um mal zu gugge :)

WMS
24.06.2003, 13:29
Hallo two-balu1

dein Problem ist ja ein ganz anderes. Du hast ein Endlosformular und welches Feld soll da abgespeichert werden. Ich glaube, da musst du ganz anders ran gehen. Da ich deine Datenbank habe, bring's mal etwas "leuchtender" rüber. :confused:

two-balu1
24.06.2003, 13:40
Also:
Das Feld gaanz links "Z" ist eine von einer Abfrage "qry_ReklamationsDetailnummer_erzeugen" generierte Nummer (Das soll eine durchnummerierung von Detaildatensätzen für jeden Masterdatensatz sein).
Diese Nummer wird ordentlich generiert und angezeigt. :)
Leider wird sie nicht abgespeichert, sondern jedesmal neu generiert.:(
Zur weiteren verwendung dieser Nummer muß ich Sie aber in der Tabelle T_Reklamationsdetails in der Spalte ReklamationsDetailnr abspeichern.

Hmm.. die frage ist folgende: :rolleyes:
Wie bekomme ich die Nummer aus der Abfrage am bestenzu dem passenden Datensatz in meine Tabelle?

Ich dachte mir: Am besten bei dem neuanlegen eines Datensatzes..., oder?