Centar za edukaciju-BiH


Stranice (2):1,2

#1 16.01.2014 10:21
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Kopiranje baze (nova godina)
Molim pomoć.
Ideja mi je da pomoću koda kopiram podatke iz Q_Inventura u privremenu tablicu Invetnura.
Zatim bih izbrisao podatke iz tablica Ulaz i Izlaz i nakon toga bi u tablicu Ulaz kopirao podatke koji su predhodno spremljeni u tablicu Inventura.
Prvi dio, kopiranje u tablicu Inventura odradi se kako treba ali kada želim iz tablice Inventura prenijeti podatke u tabllicu Ulaz javlja se greška "Record is Deleted"
PreuzmiIzvorni kôd (vbnet):
  1. Private Sub Inventura_Click()
  2. Dim Baza As Database
  3. Dim Sl_Pocetna As Recordset
  4. Dim Sl_Prelazna As Recordset
  5. Dim Sl_Zavrsna As Recordset
  6. Dim Kolicina As Double
  7. Set Baza = CurrentDb()
  8.  
  9. Set Sl_Pocetna = Baza.OpenRecordset("Q_Inventura", dbOpenDynaset)
  10. Set Sl_Prelazna = Baza.OpenRecordset("Inventura", dbOpenDynaset)
  11. Set Sl_Zavrsna = Baza.OpenRecordset("Ulaz", dbOpenDynaset)
  12.  
  13. MsgBox "podaci e biti kopirani", vbOKCancel
  14.  
  15. If vbOK Then
  16. CurrentDb.Execute "DELETE*FROM [Inventura]"
  17.     If Sl_Pocetna.RecordCount > 0 Then
  18.         Sl_Pocetna.MoveFirst
  19.         While Not Sl_Pocetna.EOF
  20.         Kolicina = Sl_Pocetna![Ulaz]
  21.             With Sl_Prelazna
  22.                  .AddNew
  23.         ![Sifra] = Sl_Pocetna![Sifra]
  24.         ![Datum] = Sl_Pocetna![Datum]
  25.         ![Skl] = Sl_Pocetna![Skl]
  26.         ![IDdokumenta] = 4
  27.         ![Predatnica] = ""
  28.         ![Dobavljac] = 1
  29.         ![Nalog] = ""
  30.         ![Regal] = ""
  31.     If Kolicina < 0 Then
  32.         ![Ulaz] = 0
  33.     Else
  34.         ![Ulaz] = Sl_Pocetna![Ulaz]
  35.     End If
  36.         .Update
  37.     End With
  38.          Sl_Pocetna.MoveNext
  39.         Wend
  40. End If
  41. CurrentDb.Execute "DELETE*FROM [Ulaz]"
  42. CurrentDb.Execute "DELETE*FROM [Izlazi]"
  43.     If Sl_Prelazna.RecordCount > 0 Then
  44.         Sl_Prelazna.MoveFirst
  45.         While Not Sl_Prelazna.EOF
  46.             With Sl_Zavrsna
  47.                  .AddNew
  48.         ![Å ifraUlaz] = Sl_Prelazna![Sifra]
  49.         ![Datum] = Sl_Prelazna![Datum]
  50.         ![Skl] = Sl_Prelazna![Skl]
  51.         ![Ulaz] = Sl_Prelazna![Ulaz]
  52.         ![IDdokumenta] = Sl_Prelazna![IDdokumenta]
  53.         ![Predatnica] = Sl_Prelazna![Predatnica]
  54.         ![Dobavljac] = Sl_Prelazna![Dobavljac]
  55.         ![Nalog] = Sl_Prelazna![Nalog]
  56.         ![Regal] = Sl_Prelazna![Regal]
  57.         .Update
  58.             End With
  59.          Sl_Prelazna.MoveNext
  60.         Wend
  61.    End If
  62. Kraj:
  63.     Set Baza = Nothing
  64.     DoCmd.OpenTable "Ulaz", acViewNormal, acEdit
  65. End If
  66. End Sub


Prilozi:
Informacije o tipu datoteke za:rar  Primjer.rar
Preuzimanja:328
Velicina datoteke:30.12 KB


Pozdrav
Ovaj post je ureden 1 puta. Posljednja izmjena 18.01.2014 15:21 od strane pmiroslav. ↑  ↓

#2 16.01.2014 11:21
dex Van mreze
Super Moderator
Registrovan od:23.02.2012
Postovi:625


Predmet:Re: Greška u proceduri
Kod mene radi OK
↑  ↓

#3 16.01.2014 13:06
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Greška u proceduri
Probaj sa ovim:

Sl_Pocetna.Close
Sl_Zavrsna.Close
Sl_Prelazna.Close
CurrentDb.Execute "DELETE*FROM [Ulaz]"
CurrentDb.Execute "DELETE*FROM [Izlazi]"
Set Sl_Zavrsna = Baza.OpenRecordset("Ulaz", dbOpenDynaset)
Set Sl_Prelazna = Baza.OpenRecordset("Inventura", dbOpenDynaset)
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#4 16.01.2014 13:56
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Greška u proceduri
Izgleda da sam pronašao problem.

CurrentDb.Execute "DELETE*FROM [Inventura]"
sam prebacio odmah iza
Set Baza = CurrentDb()
i sada je OK.

Jedino bi mi još dobro došlo kada bi se moglo ovako nešto:
Ovaj kod pokrećem iz baze koja se zove 'Skladiste_2013_be.mdb'
Kodom napraviti indentičnu bazu koja bi se zvala 'Skladiste_2014_be.mdb' (odnosno za godinu viÅ¡e od početne)
I onda u njoj odraditi gorni kod, a da prva baza ostane nepromjenjena
Pozdrav
↑  ↓

#5 16.01.2014 22:39
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Greška u proceduri
Moras setovati id rugu bazu:
Primjer:

Dim strDB As String
Dim DrugaDB As Access.Application

strDB = C:\Putanja\ImeBaze.mdb"

Set DrugaDB = _
CreateObject("Access.Application")

DrugaDBe.NewCurrentDatabase strDB

I sad u kodu gdje hoces manipulisati tabelom u ovoj drugoj setujes tabele:
Set Sl_Prelazna = DrugaDB.OpenRecordset("Inventura", dbOpenDynaset)
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#6 18.01.2014 09:15
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Greška u proceduri
U bazi koja se zove "Skladiste_2013_be.mdb" napisao sam funkciju
PreuzmiIzvorni kôd (vbnet):
  1. Function NovaBaza()
  2. Dim strDB As String
  3. Dim DrugaDB As Access.Application
  4.  
  5. strDB = "D:\Baze\Skladiste_2014_be.mdb"
  6.  
  7. Set DrugaDB = _
  8. CreateObject("Access.Application")
  9.  
  10. DrugaDB.NewCurrentDatabase strDB
  11.  
  12. End Function

kada je pokrenem napravi mi se nova baza "Skladiste_2014_be.mdb", ali prazna bez tablica iz početne baze?
Pozdrav
Ovaj post je ureden 1 puta. Posljednja izmjena 18.01.2014 09:16 od strane pmiroslav. ↑  ↓

#7 18.01.2014 11:42
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Greška u proceduri
Mozda je ovako lakse radi tabela.
Kopiras jednu tabelu od naprimjer zadnje 2013 godine i daj jo ime be.mdb.
Udjes u nju i izbrises podatke sve sem kodinih tabela.
Znaci ulaz izlaz pobrises a ostalo moze ostati.
sada kompajliras tabelu i zatvoris.
Ponovo preimenuj ovu tabelu be_mdb u be.sys.
Ovaj be.sys fajl treba da se nalazi tamo gdje i ostale baze.
U tvom slucaju je to d:\baze.
Kod ispod kopiraj u neki modul.
Pozivas proceduru NovaGodina(BrojGodine)

PreuzmiIzvorni kôd (Visual Basic):
  1. Function NovaGodina(Godina)
  2. Dim Db As Database, NovaDb As Database
  3. Dim SQL As String
  4. Dim Rs As Recordset
  5. Dim PutanjaBaza As String, Putanja As String
  6. Dim ImeNoveBaze As String
  7.  
  8. Set Db = CurrentDb()
  9. SQL = "SELECT TOP 1 Database " _
  10.    & "FROM MSysObjects " _
  11.    & "WHERE Database Is Not Null"
  12. Set Rs = Db.OpenRecordset(SQL)
  13. Putanja = Rs.Fields(0)
  14. Rs.Close
  15.  
  16. PutanjaBaza = Put_Baza(Putanja)
  17. ImeNoveBaze = "Skladiste_" & Godina & "_be.mdb"
  18. FileCopy PutanjaBaza & "be.sys", PutanjaBaza & ImeNoveBaze
  19. Set NovaDb = OpenDatabase(PutanjaBaza & ImeNoveBaze)
  20.  
  21. 'I sad dolazi tvoj kod za presnimavanje stanja
  22. 'stim da koristis svoju postojecu db i novadb za prenos u novu bazu.
  23. 'Mislim da ces se snaci da popravis svoj kod.
  24. End Function
  25.  
  26. Function Put_Baza(Putanja As String)
  27. Dim tmp As String
  28.  
  29. tmp = Putanja
  30. Do While Right(tmp, 1) <> "\"
  31. tmp = Left(tmp, Len(tmp) - 1)
  32. Loop
  33. Put_Baza = tmp
  34. End Function

Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 18.01.2014 15:24
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Kopiranje baze (nova godina)
Promjenio sam naslov jer mislim da je prikladniji.
Pokrenuo sam procduru koju si predložio ali javlja mi grešku 'Type mismatch' i zustavi se na
Set Rs = Db.OpenRecordset(SQL)
Pozdrav
↑  ↓

#9 18.01.2014 17:41
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Kopiranje baze (nova godina)
Kod mene radi na nekoliko baza i racunara.
Sto mi pada napamet je da ti je mozda ukljucen i dao i ado.
Ako je tako a netreba ti ado iskljuci a ako treba onda popravi proceduru odnosno dimenzionisanje.

Dim Db As DAO.Database, NovaDb As DAO.Database
Dim SQL As String
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 18.01.2014 21:57
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Kopiranje baze (nova godina)
ADO nije uključen.
Postupak sam ponovio u drugoj bazi i sa referencama kao na priloženoj slici i sada imam gešku
No current record
zaustavi se na
Putanja = RS.Fields(0)

Slicice prilozenih slika:
reference.jpg
Tip datoteke:Informacije o tipu datoteke za:jpg jpg
Preuzimanja:290
Velicina datoteke:68.31 KB
Velicina slike: 464 x 377 Pikseli


Pozdrav
↑  ↓

Stranice (2):1,2


Sva vremena su GMT +01:00. Trenutno vrijeme: 9: 41 pm.