Hallo Leute,
ich hoffe ihr könnt mir mit meinem Problem helfen.
Ich habe ein Formular "frm_auftrag" mit einem Endlos-Unterformular "sub_auftrag". In diesem Unterformular habe ich folgende Felder: "Werk", "PL", "Materialnummer", "Menge", daraus berechnen sich dann andere Felder in der jeweiligen Zeile in diesem Formular.
Nun hat meine Anwenderin für einen Auftrag 200 Materialnummern und hat mich nach einer Importmöglichkeit gefragt. Da dies natürlich wesentlich schneller funktionieren würde. Ich habe es schon versucht direkt in die Tabelle zu importieren, doch leider macht es Probleme mit den Berechneten Feldern. Kann ich den Import direkt im Formular machen? Irgendwie so, dass der Import die Felder füllt und wenn in Excel eine neue Zeile beginnt, er auch in Access einen neuen Datensatz im Unterformular anlegt...
Ich hoffe ich habe es einigermaßen gut erklärt....
Vielen Dank schon einmal für eure Hilfe.
Falls Ihr Vorschläge für eine bessere Lösung habt, bin ich hierfür natürlich offen!
Danke
Ich habe hinbekommen, dass er die Excel-Tabelle importiert. Leider bekomme ich Fehlermeldung, dass Autowerte nicht 0 sein dürfen und dass meine berechneten Felder leer sind. Wie bekomme ich hin, dass die Daten angezeigt, bzw. berechnet werden. Wenn ich im Formular bin und die Materialnummer erneut auswähle, zieht sich der Wert....
Hallo,
der erste Fehler ist, berechnete Felder überhaupt zu speichern, die werden besser dort stets aktuell neu berechnet wo sie gebraucht werden.
Für den Import brauchst du eine Abfrage, in der diese Berechnungen durchgeführt werden und auch die Auftragsnummer hinzugefügt wird.
Wie sieht das bei dir aus, wie hast du bis jetzt versucht, die Daten in die Tabelle zu bekommen?
Kannst du VBA-Code und/oder SQL-Code dazu zeigen?
Evtl. auch die Struktur der Eingabe und der Zieltabelle?
Das Problem ist, dass die Materialnummern keine Werte besitzen. Diese Werte erhalten Sie erst in meiner Access-Tabelle. Sprich also Material xxx soll verschrottet werden, dann gibt der User xxx ein und erhält den aktuellen Bilanzwert des Materials. Deswegen sollen sich nach dem Import die Werte aktualisieren. Private Sub Materialnummer_AfterUpdate()
Me.PE.Value = DLookup("PE", "Material", "[Materialnummer] = '" & Materialnummer.Text & "'")
Me.HK_PE.Value = DLookup("HK_PE", "Material", "[Materialnummer] = '" & Materialnummer.Text & "'")
Me.Bilanzwert_PE.Value = DLookup("Bilanzwert_PE", "Material", "[Materialnummer] = '" & Materialnummer.Text & "'")
End Sub
Ich möchte ja nur, dass die 200 Materialnummern schon mal in der Tabelle stehen und wenn dann die Anwenderin auf aktualisieren oder sowas klickt, dann die Werte zum jeweiligen Material geholt werden....
Hallo,
ZitatDas Problem ist, dass die Materialnummern keine Werte besitzen. Diese Werte erhalten Sie erst in meiner Access-Tabelle.
??
ZitatPrivate Sub Materialnummer_AfterUpdate()
Me!PE= DLookup("PE", "Material", "[Materialnummer] = '" & Me!Materialnummer& "'")
Me!HK_PE= DLookup("HK_PE", "Material", "[Materialnummer] = '" & Me!Materialnummer & "'")
Me!Bilanzwert_PE = DLookup("Bilanzwert_PE", "Material", "[Materialnummer] = '" & Me!Materialnummer& "'")
End Sub
Wenn die in der Excelliste vorhandenen "DS" (sprich Materialnummern und sonstige Felder) zu einem bestimmten Auftrag gehören, dann wäre ein solche Import (Anfüge) -Abfrage besser geeignet.
Zunächst das Excel-Sheet als Tabelle verknüpfen.
Sub btnImport_Click()
Currentdb.Execute "Insert into tblsub_auftrag (AuftragID, Materialnummer, Menge) " & _
" Select " & Me!AuftragID & " as AuftragID, Materialnummer , Menge from tbl_XlsSheet", dbfailonerror
Me!sub_auftrag.Requery
End Sub
Hallo,
ich habe die Tabelle die ich importieren will verknüpft. Tabellenname "test". Die Felder in der verknüpften Tabelle heißen Auftragsnr, Werk, PL, Materialnummer, Menge, Begruendung.
Folgenden Code führ ich nun im Formular Antrag aus:
Private Sub btnimport_Click()
CurrentDb.Execute "Insert into tblantrag (Auftragsnr, Werk, PL, Materialnummer, Menge, Begruendung) " & _
" Select " & Me!Anatrag_ID & " as Auftragsnr, Werk, PL, Materialnummer , Menge, Begruendung from tbl_test", dbFailOnError
Me!Formular.Requery
End Sub
Wenn ich den Button drücke passiert leider nichts....Fehlt da noch etwas? Muss ich eine Anfügeabfrage erstellen?
Hi,
Zitat von: lutschi83 am Juli 24, 2015, 14:06:31Die Felder in der verknüpften Tabelle heißen Auftragsnr, Werk, PL, Materialnummer, Menge, Begruendung.
dann ist die Auftragsnr bereits in der Import-Datei enthalten und die Feldnamen von Quelle und Ziel stimmen überein?
ZitatMuss ich eine Anfügeabfrage erstellen?
Was du gezeigt hast
ist eine Anfügeabfrage.
Wenn die Abfrage keinen Fehler liefert, so gibt es evtl. nichts anzufügen?
Beschreibe oder zeige uns was du vor Augen hast, wir aber nicht sehen können, bspw. die vollständige Struktur von Quell- und Zieltabelle, die Art der berechneten Felder und die vorzunehmenden Berechnungen.
Der Button heißt Import, wo aber findet der Import bzw. das Verlinken der Tabelle statt?
BTW:
Me!Formular.RequeryWas für ein Objekt ist "Formular", was willst du da aktualisieren?
Hast du den Code schon mal kompiliert??
Also im Formular Auftrag soll der User seinen Auftrag anlegen. Dann über den Button "btnimport" die Materialnummer aus der Tabelle "test" (verknüpfte Excel-Tabelle) in das Unterformular importiert werden. Das Unterformular bezieht sich auf die Tabelle Antrag.
Vielen Dank noch einmal!
ZitatDann über den Button "btnimport" die Materialnummer aus der Tabelle "test" (verknüpfte Excel-Tabelle) in das Unterformular importiert werden.
Ins Unterformular wird nichts "importiert", sondern es werden neue Datensätze in die Tabelle geschrieben.
Aber mit der Materialnummer allein ist es ja nicht getan.
Es bleiben immer noch viele Fragen offen.
Warum machst du dies:
" Select " & Me!Anatrag_ID & " as Auftragsnr, wenn doch die Ausftragsnummer bereits in der Tabelle "test" enthalten ist?
Und was ist hiermit:
ZitatMe!Formular.Requery
Was für ein Objekt ist "Formular", was willst du da aktualisieren?
und mit dieser Frage:
ZitatBeschreibe oder zeige uns [...] die Art der berechneten Felder und die vorzunehmenden Berechnungen.
So kommen wir nicht weiter...