2016-04-14 18 views
0

私は仕事用のデータベースを作ったので、スタッフがテーブルを壊さないようにフォームを作った。常にデータを追加しますが、下部に追加するのではなく、別のデータ行を上書きします。時には列全体でさえ、列の数だけではありません。 私は2つの異なる方法でコードを実行しようとしました。VBAテーブルにデータを追加すると他のデータが上書きされる

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 

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 

私は1つが他よりも多くのデータが含まれていることです。フォームを更新したときにトップコードを使用しました。

解決済み:フォームの一部のフィールドがバインドされていました。だから、これらのアイテムは時には上書きされます。これらのフィールドをアンバインドすると、上書きは中止されます。

+1

.AddNewまたは 'Insert into'は、既存のデータをテーブルにオーバーレイしません。あなたのフォーム上のコントロールはBOUNDまたはUNBOUNDですか? BOUNDを使用すると、フォームにデータ行が表示され、誰かがデータを変更する行にタイプするということがかなりわかります。それ以外にも他のコードがありますか? –

+0

一部は無効ですが、一部は無効です。私はそれらのすべてを解き放ち、それがそれを修正するかどうかを見ます。他のコードもありますが、クエリを呼び出すだけなので、何もしないと思います。 – Chris

+0

@ WayneG.DunnフォームにUNBOUNDのものを追加すると、私は答えをくれたと言うことができます。ありがとう。 – Chris

答えて

2

.AddNew VBAも 'Insert into' SQLも既存のデータをテーブルにオーバーレイしないので、原因は他にあります。フォーム上のコントロールがBOUNDの場合、単純に入力すると、そのテーブルの基礎となるレコードがオーバーレイされます。あなたの場合は、バインドされたコントロールとバインドされていないコントロールの組み合わせがあるため、バインドされたコントロールによって問題が発生しました。

0

「時には」とは何ですか?コンピュータは時には物事をしないし、時には他のことをしない。コンピュータは決定論的なので、いくつかのプロセスが動作するか動作しません。今はアンバインドされているようです。このプロセスをバインドしたり、バインドしたり、2つを混在させたりすることはできませんか?それは問題を解決するはずです。

関連する問題