2016-04-14 43 views
0

Çalışmak için bir veri tabanı oluşturdum ve bir şeyler eklemek için bir form hazırladım, böylece işçiler tablolarla uğraşmazlar. Verileri her zaman ekleyecektir, ancak bazen bunu aşağıya eklemek yerine, başka bir veri satırı üzerine yazacaktır. Bazen bir satır bile değil, sadece birkaç sütun. Kodu iki farklı şekilde yapmaya çalıştım. Vba tabloya veri ekleyerek diğer verilerin üzerine yazıyor

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 

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 

ve

Bir diğerinden daha fazla veri içerdiğini değilim. Formu güncellediğimde üst kodu kullandım.

Çözüldü: Formdaki bazı alanlar ciltlendi. Yani, bu öğeler bazen üzerine yazacaktı. Bu alanları bağladığımda, üzerine yazmayı durduracaktı.

+1

.AddNew veya 'Insert into', varolan verileri tablolarda kaplayacak. Formunuzdaki denetimler BOUND veya UNBOUND mu? BOUND, meselenin, formunuzda bir veri satırı görüntülediğinden ve veriyi değiştiren o satırın içine birisi girdiğinden oldukça eminim. Bunu yapabilecek başka bir yer var mı? –

+0

Bazıları BOUND, bazıları UNBOUND. Hepsini UNBOUND ve bunun düzeltip düzeltmeyeceğine bakacağım. Başka bir kod var, ama sadece bir sorguyu çekiyor, bu yüzden bir şey yapmadığını düşünmüyorum. – Chris

+0

@ WayneG.Dunn formdaki UNBOUND öğelerine bir yanıt ekleyin, böylece cevabı bana verdiğini söyleyebilirim. Teşekkürler. – Chris

cevap

2

.AddNew VBA veya 'Insert into' SQL, varolan verileri tablolarda kaplayacağından, bunun nedeni başka bir şeydir. Formdaki denetimler BOUND ise, basitçe bunlara yazarak altta yatan kayıt tabloya yerleştirilir. Sizin durumunuzda, bağlı ve ilişkisiz kontrollerin bir kombinasyonu olduğundan, ilişkili kontroller problemi yarattı.

0

'Bazen' ne anlama geliyor? Bilgisayarlar bazen bir şeyler yapmazlar ve bazen başka şeyler yaparlar. Bilgisayarlar deterministiktir, bu yüzden bazı süreç çalışır veya işe yaramıyor. Şu anda bağlı değil gibi görünüyor. Bu süreci bağlanmamış veya bağlı hale getirebilir ve ikisini karıştırmaz mısınız? Bu sorunu çözmeli.