Centar za edukaciju-BiH



#1 29.01.2015 12:48
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Kopiranje iz baze u bazu
Iz jedne baze VBA Codom punim tablice u drugoj bazi.
Prvo sam popunio tblTransakcije koja ima Autonumber polje IDtransakcije.
PreuzmiIzvorni kôd (vbnet):
  1. Tablica = "Skladista"
  2. Tablica_2 = "tblTransakcije"
  3.  
  4. Set SL_Pocetna = Db.OpenRecordset(Tablica, dbOpenDynaset)
  5. Set SL_Zavrsna = NovaDb.OpenRecordset(Tablica_2, dbOpenDynaset)
  6.  
  7. If SL_Pocetna.RecordCount > 0 Then
  8.         SL_Pocetna.MoveFirst
  9.         While Not SL_Pocetna.EOF
  10.             With SL_Zavrsna
  11.             .AddNew
  12.                 ![Skladiste] = SL_Pocetna![IDSkladista]
  13.                
  14.        '(ovdje ima joÅ¡ kolona ali nisu bitne)  
  15.  
  16.             .Update
  17.         End With
  18.          SL_Pocetna.MoveNext
  19.         Wend
  20.    End If


Sada bi trebao popuniti drugu tablicu koja se zove tblUlazIzlaz sa podacima iz QryStanje stime da mi kod popunjavanja tblUlazIzlaz, IDTransakcije bude jednak IDTransakcije iz gore popunjene tablice koja je u drugoj bazi, a da je uvjet

"Skladiste = '" & Skl & "'"

Pokušao sam ovako ali imamgrešku Sintax error

PreuzmiIzvorni kôd (vbnet):
  1. Dim SQL2 As String
  2. Dim Skl As String
  3.  
  4. SQL2 = "SELECT * FROM tblTransakcije IN 'D:\Sve_Godine\Baze\Prodaja_2016_be.mdb'"
  5.  
  6. Tablica = "QryStanje"
  7. Tablica_2 = "tblUlazIzlaz"
  8.  
  9. Set SL_Pocetna = Db.OpenRecordset(Tablica, dbOpenDynaset)
  10. Set SL_Zavrsna = NovaDb.OpenRecordset(Tablica_2, dbOpenDynaset)
  11.  
  12. If SL_Pocetna.RecordCount > 0 Then
  13.         SL_Pocetna.MoveFirst
  14.         While Not SL_Pocetna.EOF
  15.             With SL_Zavrsna
  16.             .AddNew
  17.      
  18.             Skl = SL_Pocetna!Skladiste
  19.                
  20.                 ![IDTransakcije] = DLookup(SQL2, "Skladiste = '" & Skl & "'")
  21.                 !Sifra = SL_Pocetna!Sifra
  22.                 !Ulaz = SL_Pocetna!Stanje
  23.                 !Izlaz = 0
  24.  
  25.             .Update
  26.         End With
  27.          SL_Pocetna.MoveNext
  28.         Wend
  29.    End If

Mučim se sa ovi cijelo prije podne i nikako da uspijem. Molim pomoć.
Pozdrav
↑  ↓

#2 29.01.2015 16:46
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Kopiranje iz baze u bazu
Dim Vrijednost

Vrijednost=DLookup(ImePoljaIzKojegHocesVrijednost,
ImeTbele,Uslov)
Ti imas samo 2 parametra.
Jos jedna stvar je sto si ti umjesto imena tabele napisao SQL a DLookup procedura zahtijeva ime tabele a nikakav sql jer ima where uslov za to.
Znaci sve u svemu to nemoze raditi.

imas dva rjesenja:
With SL_Zavrsna
.AddNew
Skl = SL_Pocetna!Skladiste
Prvo ide izmjena poslije ovog tvog koda
SQL2 = "SELECT * FROM tblTransakcije IN 'D:\Sve_Godine\Baze\Prodaja_2016_be.mdb' WHERE Skladiste='" & skl & "'"
dim RS as recordset
Dim Id
set rs=Db.openrecordset(SQL2)
id= Rs!IdTransakcije' ili kako se zove poljevec
![IdTransakcije]=id
rs.close
' ostalo ode isto

Drugi nacin je da pozivas iz prve funkcije ovu drugu sa ulaznim parametrom skladista koje si peocitao u petlji prve procedure na mjestu:
With SL_Zavrsna
.AddNew
![Skladiste] = SL_Pocetna![IDSkladista]
Ako sam dobro razumio ovo je tvoja vrojednost skl iz druge procedure
dim skl
skl= SL_Pocetna![IDSkladista]

Function Imedrugeprocedure(Skl)
sada ti u drugoj proceduri netreba sql2 niti moj kod koji sam dodao.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 29.01.2015 18:27
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Kopiranje iz baze u bazu
Ovo sada radi, puno hvala, ali ima još malo problema.
Ovo je procedura kojom pravim novu praznu bazu na početku godine. Baza se radi kopiranjem predloÅ¡ka
be.sys kako si me ti naučio. Na početku funkcije ide slijedeći kod:

PreuzmiIzvorni kôd (vbnet):
  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, ImeNoveBaze As String
  6. Dim SL_Pocetna As Recordset, SL_Zavrsna As Recordset, SL_Pomocna As Recordset
  7. Dim Tablica As String
  8. Dim Tablica_2 As String
  9.  
  10. Set Db = CurrentDb()
  11.  
  12. SQL = "SELECT TOP 1 Database " _
  13.    & "FROM MSysObjects " _
  14.    & "WHERE Database Is Not Null"
  15. Set RS = Db.OpenRecordset(SQL)
  16. Putanja = RS.Fields(0)
  17. RS.Close
  18. 'be.sys mora biti u direktoriju u kojem je i linkovana baza
  19. PutanjaBaza = Put_Baza(Putanja)
  20. ImeNoveBaze = "Prodaja_" & Godina & "_be.mdb"
  21. If Dir(PutanjaBaza & ImeNoveBaze) = "" Then
  22. FileCopy PutanjaBaza & "be.sys", PutanjaBaza & ImeNoveBaze
  23. Set NovaDb = OpenDatabase(PutanjaBaza & ImeNoveBaze)
  24. Else
  25. MsgBox "Baza ve postoji"
  26. Exit Function
  27. End If

I dalje punim prazne tablice sa :
PreuzmiIzvorni kôd (vbnet):
  1. Tablica = "tblOperatori"
  2. Set SL_Pocetna = Db.OpenRecordset(Tablica, dbOpenDynaset)
  3. Set SL_Zavrsna = NovaDb.OpenRecordset(Tablica, dbOpenDynaset)
  4.     If SL_Pocetna.RecordCount > 0 Then
  5.         SL_Pocetna.MoveFirst
  6.         While Not SL_Pocetna.EOF
  7.             With SL_Zavrsna
  8.             .AddNew
  9.                 ![KorisnikID] = SL_Pocetna![KorisnikID]
  10.                 ![FirstName] = SL_Pocetna![FirstName]
  11.                 ![LastName] = SL_Pocetna![LastName]
  12.                 ![Title] = SL_Pocetna![Title]
  13.                 ![OIB] = SL_Pocetna![OIB]
  14.                 ![WorkPhone] = SL_Pocetna![WorkPhone]
  15.                 ![OperID] = SL_Pocetna![OperID]
  16.                 ![Sifra] = SL_Pocetna![Sifra]
  17.                 ![PravaPristupa] = SL_Pocetna![PravaPristupa]
  18.                 ![RadMj] = SL_Pocetna![RadMj]
  19.             .Update
  20.         End With
  21.          SL_Pocetna.MoveNext
  22.         Wend
  23.    End If

i tako redom

Samo sam sada htio odrediti putanju do baze pa sam umjesto

SQL2 = "SELECT * FROM tblTransakcije IN 'D:\Sve_Godine\Baze\Prodaja_2016_be.mdb' WHERE Skladiste='" & skl & "'"

stavio

Dim Path As String
Path = PutanjaBaza & ImeNoveBaze

SQL2 = "SELECT * FROM tblTransakcije IN Path WHERE Skladiste='" & Skl & "'"

I sada mi javlja grešku

Could not find file D:\Path
Pozdrav
↑  ↓

#4 29.01.2015 20:04
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Kopiranje iz baze u bazu
Dim Path As String
Path =" PutanjaBaza & ImeNoveBaze

SQL2 = "SELECT * FROM tblTransakcije IN Path WHERE Skladiste='" & Skl & "'"
Trebalo bi ovako pod uslovom da je u mem. PutanjaBaza na kraju kosa crta\ ako nije onda i nju treba pridodati.
Path = Chr(39) & PutanjaBaza & ImeNoveBaze & Chr(39)
I nemoj praktikovati Variable na eng. ako nisi siguran dali ima ime takve procedure.
U klasicnom Vb-u Path je Funkcija koja vraca putanju app.
Bolje je svakako napisati naski Putanja.
Jedino nije dobro Put jer i ta naredba postoji.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 29.01.2015 20:16
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Kopiranje iz baze u bazu
Napisao sam ovako i opet mi javlja istu grešku Could not find file D:\PBaze
PreuzmiIzvorni kôd (vbnet):
  1. Dim SQL2 As String
  2. Dim PBaze As String
  3. Dim Skl As String
  4. PBaze = Chr(39) & PutanjaBaza & ImeNoveBaze & Chr(39)
  5.  
  6. Tablica = "QryStanje"
  7. Tablica_2 = "tblUlazIzlaz"
  8.  
  9. Set SL_Pocetna = Db.OpenRecordset(Tablica, dbOpenDynaset)
  10. Set SL_Zavrsna = NovaDb.OpenRecordset(Tablica_2, dbOpenDynaset)
  11.  
  12. If SL_Pocetna.RecordCount > 0 Then
  13.         SL_Pocetna.MoveFirst
  14.         While Not SL_Pocetna.EOF
  15.             With SL_Zavrsna
  16.             .AddNew
  17.      
  18.             Skl = SL_Pocetna!Skladiste
  19.                SQL2 = "SELECT * FROM tblTransakcije IN PBaze WHERE Skladiste='" & Skl & "'"
  20.                'SQL2 = "SELECT * FROM tblTransakcije IN 'D:\Sve_Godine\Baze\Prodaja_2016_be.mdb' WHERE Skladiste='" & Skl & "'"
  21. Dim RS2 As Recordset
  22. Dim ID
  23. Set RS2 = Db.OpenRecordset(SQL2)
  24. ID = RS2!IDTransakcije ' ili kako se zove polje vec
  25. RS2.Close
  26.                 ![IDTransakcije] = ID
  27.                 !Sifra = SL_Pocetna!Sifra
  28.                 !Ulaz = SL_Pocetna!Stanje
  29.                 !Izlaz = 0
  30.                 !Status = 1
  31.                 !DatumU = Date
  32.             .Update
  33.         End With
  34.          SL_Pocetna.MoveNext
  35.         Wend
  36.    End If

Pozdrav
Ovaj post je ureden 1 puta. Posljednja izmjena 29.01.2015 20:17 od strane pmiroslav. ↑  ↓

#6 29.01.2015 20:23
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Kopiranje iz baze u bazu
SQL2 = "SELECT * FROM tblTransakcije IN " & PBaze & " WHERE Skladiste='" & Skl & "'"
PBaze je memorijska a ti je stavio u string.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#7 29.01.2015 20:29
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Kopiranje iz baze u bazu
Sada je u redu. Puno ti hvala za sada.
Laku noć
Pozdrav
↑  ↓

#8 13.04.2015 19:36
carobnjak Van mreze
Clan
Registrovan od:25.07.2011
Postovi:381


Predmet:Re: Kopiranje iz baze u bazu
Uh trebao bi nesto ovako slicno ali ovo ne mogu skontati, imam jednu mdb bazu, po obicaju nesto sam radio na novo prosirio noovu bazu i sad trebam povuci tabele to jest upise iz istih u novu bazu, ako neko moze detaljnije da opise proceduru
Srdačan pozdrav
↑  ↓

#9 13.04.2015 19:45
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Kopiranje iz baze u bazu
Jel ti se poklapaju polja sa podacima koje treba da prebacis i u jednoj i u drugoj.
Najbolje da zakacis tabele.
U ovoj sto imaju podaci mozes samo ostaviti nekoliko reda.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 13.04.2015 19:50
carobnjak Van mreze
Clan
Registrovan od:25.07.2011
Postovi:381


Predmet:Re: Kopiranje iz baze u bazu
sve se poklapa tabele su identiccne to jest citava baza je ista osim u ovoj novoj sto ima trun cisto estetskih promijena ali evo sad cu pokusati da stavim komplet bazu
Srdačan pozdrav
↑  ↓

Stranice (3):1,2,3


Sva vremena su GMT +01:00. Trenutno vrijeme: 4: 58 pm.