2016-04-14 8 views
0

Ich machte eine Datenbank für die Arbeit, und machte ein Formular, um Sachen hinzuzufügen, so dass die Arbeiter nicht mit den Tischen zu tun haben. Es wird immer die Daten hinzufügen, aber manchmal, anstatt es an der Unterseite hinzuzufügen, überschreibt es eine andere Reihe von Daten. Manchmal nicht einmal eine ganze Reihe, nur ein paar Säulen. Ich habe versucht, den Code auf zwei verschiedene Arten zu tun.Vba Hinzufügen von Daten zu Tabelle überschreibt andere Daten

CurrentDb.Execute " INSERT INTO [Service Calls] " _ 
    & "([Project Name], [Phone Number], [email], [Source], [Service Address], [Zip Code], [Date of Service], [Type of Call], [Technician], [Ticket Number], [Invoice Number], [Total Billed], [Description of Work]) VALUES " _ 
    & "('" & Me.proj & "', '" & Me.phone & "', '" & Me.email & "', '" & Me.source & "', '" & Me.address & "', '" & Me.zip & "', '" & Me.doS & "', '" & Me.toC & "', '" & Me.tech & "', '" & Me.ticketNum & "', '" & Me.invoiceNum & "', '" & Me.billed & "', '" & Me.work & "');" 
    CurrentDb.Close 

und

Dim rst As Recordset 
Set rst = CurrentDb.OpenRecordset("Service Calls") 
With rst 
.AddNew 
.Fields("Project Name") = Me.proj 
.Fields("Service Address") = Me.address 
.Fields("Date of Service") = Me.doS 
.Fields("Technician") = Me.tech 
.Fields("Total Billed") = Me.billed 
.Fields("Zip Code") = Me.zip 
.Fields("Description of Work") = Me.work 
.Fields("Type of Call") = Me.toC 
.Fields("Invoice Number") = Me.invoiceNum 
.Fields("Ticket Number") = Me.ticketNum 
.Update 
End With 
    rst.Close 
    Set rst = Nothing 

Ich bin, dass man mehr Daten als die andere enthält. Ich habe den Top-Code verwendet, als ich das Formular aktualisiert habe.

Gelöst: Einige Felder in der Form wurden gebunden. Diese Elemente überschreiben also gelegentlich. Sobald ich diese Felder freigegeben habe, würde das Überschreiben aufhören.

+1

Weder die .AddNew noch die 'Einfügen in' überschreibt vorhandene Daten in Tabellen. Sind die Steuerelemente in Ihrem Formular gebunden oder ungebunden? Wenn BOUND, ich bin ziemlich sicher, das Problem ist, Ihr Formular zeigt eine Reihe von Daten und jemand Typen in die Zeile, die die Daten ändert. Gibt es anderswo einen Code, der das könnte? –

+0

Einige sind BOUND, einige sind UNBOUND. Ich werde sie ALLE UNBÜNDIGEN, und sehen, ob das es behebt. Es gibt anderen Code, aber es ruft nur eine Abfrage ab, also glaube ich nicht, dass das irgendwas macht. – Chris

+0

@ WayneG.Dunn fügen Sie eine Antwort auf UNBOUND Dinge in der Form, so kann ich sagen, Sie gaben mir die Antwort. Vielen Dank. – Chris

Antwort

2

Da weder die .AddNew VBA noch die 'Into in'-SQL vorhandene Daten in Tabellen überlagern, ist die Ursache etwas anderes. Wenn die Steuerelemente des Formulars BOUND sind, wird der zugrundeliegende Datensatz in der Tabelle durch einfaches Eintippen überlagert. Da in Ihrem Fall eine Kombination aus gebundenen und nicht gebundenen Steuerelementen vorhanden war, verursachten die gebundenen Steuerelemente das Problem.

0

Was bedeutet "manchmal"? Computer tun manchmal nicht Dinge und tun manchmal auch andere Dinge. Computer sind deterministisch, also funktioniert ein Prozess oder es funktioniert nicht. Es sieht so aus, als sei es jetzt als ungebunden eingerichtet. Können Sie diesen Prozess ungebunden oder gebunden machen und die beiden nicht mischen? Das sollte das Problem beheben.