[ konstantin @ 04.02.2008. 12:02 ] @
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? [Ovu poruku je menjao konstantin dana 05.02.2008. u 09:01 GMT+1] [Ovu poruku je menjao konstantin dana 05.02.2008. u 09:03 GMT+1] |