Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Neregularan upis u tabelu bez ikakvih upozorenja!

[es] :: Access :: Neregularan upis u tabelu bez ikakvih upozorenja!

[ Pregleda: 2077 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

konstantin

Član broj: 17262
Poruke: 132
*.telekomsrpske.com.



Profil

icon Neregularan upis u tabelu bez ikakvih upozorenja!04.02.2008. u 12:02 - pre 196 meseci
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]
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!04.02.2008. u 15:18 - pre 196 meseci
Očigledno da nije isto direktno raditi u tabeli i vršiti importovanje. Sećem se od ranije, recimo konverzija:
Informix -> Clipper. Morao sam da uklonim sva ograničenja (Constraint) da bi konverzija bila valjana. Nakon toga postavljao sam indekse i ostalo. U ovom slučaju Primarne ključeve.
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.telekomsrpske.com.



Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!05.02.2008. u 08:10 - pre 196 meseci
Nije stvar u generalnim problemima oko importa.
Mene interesuje kako da spriječim NEUPOZORAVANJE sa bilo kog nivoa dok se prilikom importa krše takva pravila kao što je nemogućnost dupliranja primarnog ključa.
Evo napunite tabelu test1 sa 10 probnih slogova i izvršite gore postavljeni testni kod. Stvarno bezveze.

Npr. Test1:

1 2 4 3 3 2
1 2 4 2 3 2
1 1 1 4 1 6
1 1 1 3 3 1
2 2 2 3 5 6
1 2 4 3 3 2
1 2 4 2 3 2
1 1 1 4 1 6
1 4 9 3 3 1
2 2 2 3 5 6

Stvarno bezveze.
Ima li neko odgovor na gore postavljeno pitanje?
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.telekomsrpske.com.



Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 08:36 - pre 196 meseci
Radio sam i update (takođe sa db.execute) poslije inserta i takođe ne dobijem nikakve greške ni upozorenja sa "bilo koje strane".
Da li je moguće da generalno za metod Execute pri objektu db nema nikakvih upozorenja?
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 09:09 - pre 196 meseci
Šta ti je čekirano na Tools, Options, Edit/Find, Confirm? Ako nije Action Queries, čekiraj tu opciju.
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.telekomsrpske.com.



Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 10:48 - pre 196 meseci
Čekirana je opcija. Uostalom probaj da izvršiš gore navedeni kod kod sebe pa se uvjeri.
 
Odgovor na temu

Getsbi

Moderator
Član broj: 124608
Poruke: 2828



+45 Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 10:59 - pre 196 meseci
Ako hoćeš da ti neko istestira nešto, trebalo bi da napraviš primer i zakačiš ga. Malo ljudi ima vremena da od početka kreira tabele po tvom uputsvu i implementira code. Deviza je : Pomozi da bi ti pomogli. :-)
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.telekomsrpske.com.



Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 11:14 - pre 196 meseci
Moja baza podataka je zaista ogromna, upravo zato sam i naveo primjer na gore opisan način.
Ali ok, čim stignem kreiraću taj mdb i uploadovati ga.
 
Odgovor na temu

DarioBH
Bosna i Hercegovina

Član broj: 86881
Poruke: 453
*.PPPoE-1030.sa.bih.net.ba.



+1 Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 11:20 - pre 196 meseci
Napravio sam ja i upravu je covjek, kopira samo one koji nemaju iste vrijednosti PK a one druge ne bez ikakvog upozorenja ili obavjestenja da ih nije kopirao

Al nisam skontao poentu svega ovoga, zasto jednostavno ne uradis copy paste i ako nesto ne valja napravice 'paste error' tabelu.
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.telekomsrpske.com.



Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 11:26 - pre 196 meseci
Zato što prihvatam veliku količinu podataka za tačno zadani format i pripremam ih za migraciju u buduću bazu podataka. Vrlo je osjetljiv posao a mdb mi je u ovom slučaju samo tranziciona baza.

[Ovu poruku je menjao konstantin dana 06.02.2008. u 12:41 GMT+1]
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.telekomsrpske.com.



Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 11:29 - pre 196 meseci
Getsbi, suština mog pitanja je saglediva možda i bez ovog uploada ali evo i njega.
(na Form1, komandno dugme)
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!06.02.2008. u 14:04 - pre 196 meseci
Treba ovako:

db.Execute (strIns5), dbFailOnError

db.Execute treba uvek izvrsavati sa opcijom dbFailOnError. Ako se pojavi greska, cela transakciaj se ponistava (rollback). Ako dodas Error handling, videces i koja je greska u pitanju. Ako ne dodas error handling, dobices Error: End, Debug poruku i onda mozes da vidis i koja je linija proizvela gresku.

Ako trazis Help za Execute mozes da vidis ovo:

dbFailOnError Rolls back updates if an error occurs (Microsoft Jet workspaces only).


Zakacio sam fjl sa malim prepravkama koda. Ne prolaze podaci s greskom i dobijes lepu poruku.






Prikačeni fajlovi
 
Odgovor na temu

konstantin

Član broj: 17262
Poruke: 132
*.telekomsrpske.com.



Profil

icon Re: Neregularan upis u tabelu bez ikakvih upozorenja!07.02.2008. u 07:15 - pre 196 meseci
Prosto ne mogu da vjerujem da to nisam pronašao na Microsoftovom sajtu.
Zidar, najljepša hvala na objašnjenju.
 
Odgovor na temu

[es] :: Access :: Neregularan upis u tabelu bez ikakvih upozorenja!

[ Pregleda: 2077 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.