Neuer Datensatz lässt sich nicht erzeugen

Hallo,

vor einiger Zeit schrieb ich bereits hier über meine Access-Form, bei der Daten aus mehreren Tabellen dargestellt werden. Ich schien alle Probleme gelöst zu haben und beschäftigte mich mit einem zusätzlichen Formular, das per Knopfdruck aufgeht. Nun stelle ich fest, dass ich im Hauptformluar keine neuen Datensätze hinzufügen kann!
Das Hauptformular baut auf diesen SQL-Code auf:
SELECT CASE WHEN NULLIF((SELECT COUNT(Auftrag)FROM [Fehlermeldung].[dbo].[Fehlermeldungen] f
INNER JOIN [dbo].[holdLOT] hl ON f.Auftrag = LEFT(hl.batchLot, 6)
GROUP BY Auftrag
HAVING f.Auftrag = LEFT(holdlot.batchLot, 6)), 0) > 0 THEN 1 ELSE 0 END AS fehlermeldung,(SELECT COUNT(f.Auftrag) AS Expr1
FROM Fehlermeldung.dbo.Fehlermeldungen AS f
INNER JOIN dbo.holdLOT AS hl ON f.Auftrag = LEFT(hl.batchLot, 6)
GROUP BY f.Auftrag
HAVING (f.Auftrag = holdlot.batchLot)) AS anzahlFehlermeldungen,
dbo.camic.process, dbo.holdLOT.*, left(dbo.holdlot.batchlot,5) AS sourcelot, dbo.camic.[Bus#Line L], dbo.camic.Anz#, dbo.camic.TYP_BEZ AS TYPE, dbo.camic.NK, dbo.camic.MB, dbo.camic.Automotive, dbo.camic.Mav, dbo.camic.TestCenter, dbo.camic.diff#group, dbo.camic.Stufe
FROM dbo.holdLOT INNER JOIN
dbo.camic ON dbo.holdLOT.batchLot = dbo.camic.AUF

Um es kurz zu sagen, zunächst wird berechnet, wie oft der key batchlot in fehlermeldungen vorkommt (kursiv), dann aus holdlot (Haupttabelle)und camic Daten entnommen. Die Rechnung mit den Fehlermeldungen kann ich auch weglassen, bringt bloss nix.
Ich will die camic-Daten auch auf keinen Fall in ein Unterformular packen, da ich per Rechtsklick im Formular nach ihnen filtern können muss!
Nun das Problem:
Wenn ich (per VBA oder ohne) auf den letzten, d.h. leeren Eintrag gehe, lässt er mich nicht in das key-Feld batchlot schreiben. In einem älteren Formular, in dem das ganze Formular direkt aus einer Tabelle gespeist wird, klappt das. Hier aber behauptet er immer die Felder seien read only. Ich kann also davon ausgehen, dass es mal wieder am SQL-Code liegt…
Oder???

Danke,
Sebastian

Hast du die Eigenschaft Unique Table des Hauptformulars auf die Tabelle eingestellt, die du bearbeiten willst?
Wenn du die Eigenschaft nicht direkt im Eigenschaftsfenster einstellen kannst, kann diese auch per VBA bei Laden des Formulars eingestellt werden:

Sub Form_Load()
me.UniqueTable = „Tabellenname“
end Sub

Übrigens: deine Anweisung ist so komplex, hoffentlich hast du sie als Prozedur oder Sicht abgespeichert und nicht einfach nur so im Access-Formular in der Datenquelle.

EPa

Hallo,

Hast du die Eigenschaft Unique Table des Hauptformulars auf
die Tabelle eingestellt, die du bearbeiten willst?
Wenn du die Eigenschaft nicht direkt im Eigenschaftsfenster
einstellen kannst, kann diese auch per VBA bei Laden des
Formulars eingestellt werden:

Sub Form_Load()
me.UniqueTable = „Tabellenname“
end Sub

Damit habe ich Probleme: ich ziehe ja meine Daten aus zwei Tabellen (plus zwei weitere, die aber in Subforms gezeigt werden), welche Tabelle muss dort hin? Wenn ich die einzelnen Tabellen ausprobiere, also einfach
me.UniqueTable = „holdlot“
setze, bekomme ich den Runtime error 2101. „The setting you entered isn’t valid for this property.“

Übrigens: deine Anweisung ist so komplex, hoffentlich hast du
sie als Prozedur oder Sicht abgespeichert und nicht einfach
nur so im Access-Formular in der Datenquelle.

Richtig, leider habe ich den VBA-Code dafür partout nicht zum laufen gekriegt, deswegen steht es tatsächlich noch „nur so im Access-Formular in der Datenquelle“…

Grüße