Açıkçası ne yapmak istediğinizi ve mantığını net anladığımı söyleyemem. Ancak ifadelerinizden yola çıkarak
- Öncelikle ilişkisel veritabanı mantığını dikkatle incelemelisiniz. 40 alanlı tablo olmaz, daha az sayıda alanlar içeren ve birbirleri ile ilişkilendirilmiş tablolar kullanılır.
- INSERT INTO ile kayıt güncelleme yapılmaz, yeni kayıt oluşturulur. Mevcut kayıt içinde değişiklik için UPDATE sorgusu kullanılır. Siz yeni kayıt mı oluşturmaya çalışıyorsunuz mevcut kayıtları düzenlemeye mi?
- @berduş Hocamın da belirttiği gibi neden yeni bir tablo kullanmak ihtiyacı duyuyorsunuz, form illa tek bir tabloya da bağlı olmak zorunda değildir çok sayıda tablo kaynak olarak kullanılabilir. Tek form üzerinden ekle, sil, düzenle işlemleri yapılabilir.
Sizleri anlıyorum,sizler bu işi iyi bilen insanlarsınız.Ben sizler kadar anlamıyorum, ayrıca bu iş yerinde bir süredir çalışıyorum ve kullanılan bu program uzun zaman önce kullanılmaya başlamış. Sıfırdan ben yapmıyorum, ben sadece küçük bir düzenleme ile işimizi daha kolay hale getirmeye çalışıyorum.
Keşke sizlerin de dediği gibi bir çok tablo yerine birkaç tablo ve tablo alan sayısı vs vs söylediğiniz kriterlere göre yapılmış olsaydı. Celoyce arkadaşımızın vermiş olduğu kod (örnek uygulama üzerinde var ) asıl uygulamamızda kullandığımızda şöyle bir hata alıyoruz.
"Alan eklemeyi denediğiniz veri miktarını kabul etmeyecek kadar küçük" kodda mı problem yoksa tabloda alan boyutu ayarı ile mi alakalı??
Alan boyutunu değiştirdiğimiz halde aynı hatayı veriyor..
dilerim işinize yarar
Private Sub BtnAktar_Click()
For x = 1 To 3
Controls("Mtn_" & x) = ""
If IsNull(Controls("Ak_" & x)) = False Then
Dim Dz() As Variant
Dz = Controls("Ak_" & x)
iLower = LBound(Dz)
iUpper = UBound(Dz)
son = ""
For xL = iLower To iUpper
son = son & ", " & Dz(xL)
Next xL
Controls("Mtn_" & x).Value = Mid(son, 2)
End If
Next x
DoCmd.RunCommand acCmdSaveRecord
'hy__________________________________________Kayıt Ekle
SrgK = "SELECT * FROM tbl_yonler_aktarma"
Dim rs As ADODB.Recordset: Set rs = New ADODB.Recordset
rs.Open SrgK, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs.AddNew
rs("yon") = Me.yon
rs("ort") = Me.ort
rs("mat") = Me.mat
xID = rs(0)
rs.Update
rs.Close
''''''''hy__________________________________________MVFEkle
Dim rs2 As DAO.Recordset
Dim strSQL As String
strSQL = "SELECT kimlik, metin1.Value As MVFYon, metin2.Value As MVFOrt, metin3.Value As MVFMat " & _
"FROM tbl_yonler WHERE kimlik= " & Me.txtID
Set rs2 = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
With rs2
On Error Resume Next
Do While Not .EOF
strSQL = "INSERT INTO tbl_yonler_aktarma (metin1.Value) VALUES ('" & !MVFYon & "') WHERE kimlik=" & xID
CurrentDb.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO tbl_yonler_aktarma (metin2.Value) VALUES ('" & !MVFOrt & "') WHERE kimlik=" & xID
CurrentDb.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO tbl_yonler_aktarma (metin3.Value) VALUES ('" & !MVFMat & "') WHERE kimlik=" & xID
CurrentDb.Execute strSQL, dbFailOnError
.MoveNext
Loop
.Close
End With
End Sub
örneğiniz için çok teşekkür ederim,1-2 seçenek yapınca sorunsuz aktarma yapıyor lakin şöyle bir sorun devam ediyor?
yon-mat-ort açılan kutuları için en az 3 ve daha fazla seçim yaptığımızda resimdeki gibi hata almaya devam ediyoruz.
[img]
[/img]
özellikle dosyanızın aslına uygun olmasını isteme sebebimiz bu,
baştan savma dosya hazırlarsanız her adımda sorun çıkar.
hatanın sebebi alan türünün kısa metin türünde olmasına rağmen sizin çok uzun metin girmeye çalışmanız
ilgili alanların türünü uzun metin olarak ayarlayarak dener misininiz?
bahsettiğiniz gibi kısa metin alan türünü uzun metin yaptığımda bu defa da birleşik giriş kutusu (yani seçim yapma olayı ) ortadan kalkıyor.