izmenjeno 2 puta, poslednji put konstantin 05.02.2008. u 09:03
Izmene poruke
- konstantin05.02.2008. u 09:03zapis iz teksta poruke
- konstantin05.02.2008. u 09:01zapis iz teksta poruke
Ljudi zabezeknuo sam se prije par dana. Imao sam zadatak da prihvatim neke podatke u access, iz source tabele prilagoditi podatke u destination tabelu. Napravio kod, sve prošlo kako treba ali shvatim da je broj insertovanih slogova manji nego što sam očekivao,iako nisam dobio nikakvu grešku!? Ganjao problem sa kolegom čitav sat i shvatim da su u source tabeli u kojoj nema primarnog ključa dozvoljeni duplirani slogovi i da ustvari nisu insertovani u destination tabelu naravno upravo oni slogovi koji se ponavljaju jer je u drugoj tabeli definisan primarni ključ.
E sada, sve bi to bilo normalno da sam ja dobio bilo kakvu grešku, međutim nikakvo upozorenje ni od Jet-a ni od VBA iako pokušavam da insertujem slogove koji imaju istu vrijednost PK kao neki drugi slogovi.
Da Vam ne bih komplikovao sa svojim velikim tabelama i svojim kodom, napravio sam sličan kod za 2 tabele:
test1:
f1 txt
f2 txt
f3 num
f4 txt
f5 num
i
test2:
p1 txt PK
p2 txt PK
p3 num PK
p4 txt
p5 num
Ručno ažurirajte tabelu test1 sa 10ak slogova ali da se prva 3 polja ponavljaju za neke slogove, kreirajte dugme cmdBozeSacuvaj i probajte da se uvjerite:
Private Sub cmdBozeSacuvaj_Click()
Dim db As Database
Dim rst1, rst2 As Recordset
Dim str5, strIns5 As String
Set db = CurrentDb
db.Execute "delete * from test2;"
str5 = "SELECT f1,f2,f3,f4,f5 from test1;"
Set rst1 = db.OpenRecordset(str5)
rst1.MoveLast
MsgBox "Tabela test1 ima ukupno slogova-" & rst1.RecordCount
rst1.MoveFirst
While Not rst1.EOF
strIns5 = "insert into test2 (p1,p2,p3,p4,p5) values('" & rst1!f1 & "','" & rst1!f2 & "'," & rst1!f3 & ", '" & rst1!f4 & "', " & rst1!f5 & ");"
db.Execute (strIns5)
rst1.MoveNext
Wend
Set rst2 = db.OpenRecordset("select count(*) as brsl from test2;")
MsgBox "Kraj prenosa u tabelu test2 ukupno samo" & " " & rst2!brsl & " slogova!"
End Sub
Prvo kako je ovako nešto uopšte moguće , a drugo kako se odbraniti od ovako hinjske situacije?
E sada, sve bi to bilo normalno da sam ja dobio bilo kakvu grešku, međutim nikakvo upozorenje ni od Jet-a ni od VBA iako pokušavam da insertujem slogove koji imaju istu vrijednost PK kao neki drugi slogovi.
Da Vam ne bih komplikovao sa svojim velikim tabelama i svojim kodom, napravio sam sličan kod za 2 tabele:
test1:
f1 txt
f2 txt
f3 num
f4 txt
f5 num
i
test2:
p1 txt PK
p2 txt PK
p3 num PK
p4 txt
p5 num
Ručno ažurirajte tabelu test1 sa 10ak slogova ali da se prva 3 polja ponavljaju za neke slogove, kreirajte dugme cmdBozeSacuvaj i probajte da se uvjerite:
Private Sub cmdBozeSacuvaj_Click()
Dim db As Database
Dim rst1, rst2 As Recordset
Dim str5, strIns5 As String
Set db = CurrentDb
db.Execute "delete * from test2;"
str5 = "SELECT f1,f2,f3,f4,f5 from test1;"
Set rst1 = db.OpenRecordset(str5)
rst1.MoveLast
MsgBox "Tabela test1 ima ukupno slogova-" & rst1.RecordCount
rst1.MoveFirst
While Not rst1.EOF
strIns5 = "insert into test2 (p1,p2,p3,p4,p5) values('" & rst1!f1 & "','" & rst1!f2 & "'," & rst1!f3 & ", '" & rst1!f4 & "', " & rst1!f5 & ");"
db.Execute (strIns5)
rst1.MoveNext
Wend
Set rst2 = db.OpenRecordset("select count(*) as brsl from test2;")
MsgBox "Kraj prenosa u tabelu test2 ukupno samo" & " " & rst2!brsl & " slogova!"
End Sub
Prvo kako je ovako nešto uopšte moguće , a drugo kako se odbraniti od ovako hinjske situacije?