Centar za edukaciju-BiH


Stranice (6):1,2,3,4,5,6

#21 24.03.2019 14:43
dzaga29 Van mreze
Clan
Registrovan od:22.01.2013
Postovi:26


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
U praksi mi očitavamo vodomjere daljinski ali imamo ih joÅ¡ i običnih. Imamo aplikaciju tzv. MCentar preko koje punimo dlanovnike (Radijske čitače) i ljudi odlaze na očitavanje po određenim obilascima. U obilascima odredimo koje vodomjere će očitavati, s koje ne. Kućne savjete i poduzeća očitavamo mjesečno a domaćinstva kvartalno. U MCentar se unose podaci o kupcima i vodomjerima i kreiraju se obilasci. Nakon Å¡to ljudi obave očitanja u MCentar se unesu podaci i ažuriraju očitanja. Obzirom da do MCentra ne mogu svi djelatnici kojima trebaju podaci doÅ¡ao sam na ideju da napravim aplikaciju u Accessu kojoj bi mogli svi pristupiti. Iz MCentra sam izvukao backup u XML formatu i učitao ga u Access, napravio relacije i dobio bazu. Baza trenutno ima oko 4000 zapisa a kako se bude Å¡irila tako ću je ažurirati. Zbog samog punjenja podataka iz MCentra dosta sam ogranićen sa tablicama i relacijom. Ovo Å¡to sam napravio funkcionira savrÅ¡eno ali sam malo zapeo kod djela kod izmjena vodomjera. Tog djela nema u MCentru, a meni je važan jer ova aplikacija u Accessu je prvenstveno radi izvjeÅ¡taja i upita na bazu koje mogu kreirati a u MCentru toga nema.
Gdje je nastao problem sa Izmjenom - jednostavno u Tablici Kupci_Vodomjeri su samo dva zapisa i to Å ifra kupca i Broj vodomjera, a to su kombinacije koje su nastale kada smo određenom kupcu pridružili neki vodomjer. Ako ja promjenim broj vodomjera za nekog kupca, a prije toga ne unesem taj vodomjer u bazu Vodomjera javlja se greÅ¡ka, odnosno u zapisu u tablici Izmjene nestane stari broj vodomjera i ne mogu ga koristiti za arhivu, a isto se deÅ¡ava i u tablici Vodomjeri (nestane stari vodomjer). Dakle potrebno je u formi za izmjenu vodomjera ispuniti podatke o izmjeni (stari i novi vodomjer, profili, datumi idr.) i kada pokrenem komandu za knjiženje kod mora izvesti slijedeće: Zapis o Izmjeni u nepromjenjenoj formi spremiti u tablicu izmjene a onda iz tog zapisa iskopirati novi zapis i dodati ga u tablicu Vodomjeri ali na njemu treba promjeniti Broj vodomjera (ide novi broj, novi datum, marka i profil i sl.). Na taj način imam oba vodomjera, ali sada treba u tablici Kupci_Vodomjeri pronaći zapis Kupca i umjesto starog vodomjera zadužiti ga sa brojem novog.
To je u biti to, nadam se da sam uspio sve razjasniti!
↑  ↓

#22 24.03.2019 14:53
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
Imam jedno pijane
Dali je moguce u tabela kupci_vodomjer jedan kupac da ima vise od jedan vodomjer?
↑  ↓

#23 24.03.2019 15:08
dzaga29 Van mreze
Clan
Registrovan od:22.01.2013
Postovi:26


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
Da moguće je i ima takvih, npr. trgovine, banka i slično koji imaju objekte u viÅ¡e mjesta, uz post Å¡aljem i relaciju sa skicom Å¡to bi trebalo napraviti.VidiÅ¡ da je odnos Kupaca i Vodomjera jedan na viÅ¡e!

Slicice prilozenih slika:
Relacije.jpg
Tip datoteke:Informacije o tipu datoteke za:jpg jpg
Preuzimanja:157
Velicina datoteke:649.51 KB
Velicina slike: 1280 x 1024 Pikseli

↑  ↓

#24 24.03.2019 15:31
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
PreuzmiIzvorni kôd (Visual Basic):
  1. Dim Vodomjer As String     'Stari broj vodomjera
  2. Dim Novi As String         'Novi broj vodomjera
  3. Dim NMarka As String       'Nova marka vodomjera
  4. Dim Profil As String       'Novi profil vodomjera
  5. Dim Gotovo As Variant      'Potvrdni okvir za knjiženje
  6. Dim db As DAO.Database
  7. Dim rs As DAO.Recordset
  8. Dim rsIzmena As DAO.Recordset
  9. Dim strSQL As String
  10. Dim strSQL_Kupci As String
  11.  
  12. 'Prvo bi trebalo napraviti kontrolu da se vidi da li je aktiviran gumb za knjiženje; ako je aktivan
  13. If Me.Gotovo = True Then   ' Ovo je checkBox aktiviran gumb
  14.   MsgBox "Vec proknizen"
  15.    Exit Sub
  16. End If
  17.  
  18. Vodomjer = Broj_vodomjera
  19. Novi = NoviVodomjer
  20. NMarka = MarkaNovog      ' Nisam siguran za ovo mislam da je ovo kljuc pa tu bi trebalo biti ID
  21. Profil = ProfilNovog
  22. 'poruka da je knjiženje izvršeno i izlaz, a ako nije onda treba u tablicu vodomjeri dodat novi red
  23. 'koji bi bio kopija reda sa starim vodomjerom uz izmjenu Broja vodomjera, datuma ugradnje, marke i profila sve ide iz izmjene (polja - Novi,NMarka,Profil)
  24.  
  25.  strSQL = "SELECT * FROM Vodomjeri WHERE Broj_vodomjera='" & Vodomjer & "'"
  26.  
  27. Set db = CurrentDb
  28. Set rs = db.OpenRecordset(strSQL)
  29. Select Case rs.RecordCount
  30.        Case 0
  31.                MsgBox "Ne postoi vodomjer sa taj broj"
  32.        Case 1
  33.           rs.AddNew
  34.           ' Prenos od stari vodomer
  35.          rs.Fields("Broj_vodomjera") = rs.Fields("Broj_vodomjera")
  36.           rs.Fields("Radio_Adresa") = rs.Fields("Radio_Adresa")
  37.           rs.Fields("Sifra") = rs.Fields("Sifra")
  38.           rs.Fields("Marka") = rs.Fields("Marka")
  39.           rs.Fields("Datum_ugradnje") = rs.Fields("Datum_ugradnje")
  40.           rs.Fields("Promjer") = rs.Fields("Promjer")
  41.           rs.Fields("Ulica") = rs.Fields("Ulica")
  42.           rs.Fields("Kc_br") = rs.Fields("Kc_br")
  43.           rs.Fields("Naselje") = rs.Fields("Naselje")
  44.           rs.Fields("Komentar") = rs.Fields("Komentar")
  45.           rs.Fields("Tip_Modula") = rs.Fields("Tip_Modula")
  46.           rs.Fields("Period_ocitavanja") = rs.Fields("Period_ocitavanja")
  47.           rs.Fields("Medij") = rs.Fields("Medij")
  48.           rs.Fields("Kontrolni_broj") = rs.Fields("Kontrolni_broj")
  49.           rs.Fields("Tip_vodomjera") = rs.Fields("Tip_vodomjera")
  50.           rs.Fields("Status_vodomjera") = rs.Fields("Status_vodomjera")
  51.           rs.Fields("Multiplikator") = rs.Fields("Multiplikator")
  52.           rs.Fields("Dijelitelj") = rs.Fields("Dijelitelj")
  53.           ' Izmjena za novi vodomer
  54.          rs.Fields("Broj_vodomjera") = Novi
  55.           rs.Fields("Datum_ugradnje") = Now()
  56.           rs.Fields("Tip_vodomjera") = NMarka
  57.           'rs.Fields("Promjer") = Profil  ' ova ne znam sta je i koe polje treba biti u tabeli
  58.          rs.Update 'umjesto update bi trebalo da doda novi red
  59.                      
  60.          ' Izmjena na Kupci_Vodomjeri
  61.         strSQL_Kupci = "SELECT * FROM Kupci_Vodomjeri WHERE Broj_vodomjera='" & Vodomjer & "' AND Sifra_kupca=" & Sifra_kupca
  62.          Set rsIzmena = db.OpenRecordset(strSQL_Kupci)
  63.              rsIzmena.Edit
  64.              rsIzmena.Fields("Broj_vodomjera") = Novi
  65.              rsIzmena.Update 'umjesto update bi trebalo da doda novi red
  66.             MsgBox "Uspesana izmena"
  67.        Case Is > 1
  68.              MsgBox "ima povecanje od jedan vodomjer u tabeli"
  69. End Select
  70.  
  71. rs.Close
  72. rsIzmena.Close
  73. db.Close
  74. Set rs = Nothing
  75. Set rsIzmena = Nothing
  76. Set db = Nothing


Ovo je varijanta sa izmjena
↑  ↓

#25 24.03.2019 16:18
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
Procitao sam tema koja ste vodili na ES e sad je pijane jeli ovo ispravan put po koj se treba kretati.
Moje mislejne je deka je ovo neispravan put .
Kako bi ja ovo resio:
Napravio vi baza koja odgovara prema svih moi potrebi i onda samo bi importovao odcitavajna vodomjera iz MCentar ili kako se zove ta aplikacija.
Sve ovo sta ste uradili je megalomansko i imaces dosta problema jel ne znas pisati cod , a bez coda ne mozes resiti ni jedan problem koj kako vidim kod tebe izlaze svaki dan .

Moj sovet ti je da malo razmislis i ako treba srusi sve ovo i napravi iz pocetak kako treba.
Jedan program se pravi godinama , ne mozes za mesec dana napraviti program pogotovo kad si pocetnik u programirajne.

Mi smo tu za svaki problem
Pozdrav i srecno
Ovaj post je ureden 1 puta. Posljednja izmjena 24.03.2019 16:19 od strane Gjoreski. ↑  ↓

#26 24.03.2019 16:53
dzaga29 Van mreze
Clan
Registrovan od:22.01.2013
Postovi:26


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
Uff! Ubio si me u pojam; ja se slažem s tim Å¡to si napisao, ali osim ovog Å¡to si konstatirao ima jedan problem koji me natjerao da radim na ovaj način, a to je da baza mora imati identične podatke o kupcima, vodomjerima i ostalom kao i baza u ostalim strukturama firme. Kada nebi bilo tako ne bi mogao povlačiti podatke iz računovodstva i kadrovske, a djelatnici iz tog sektora bi se bunili kada bi se podaci razlikovali. Kada jedanputa baza bude popunjena ostati će malo zapisa za pisati ručno, a Å¡to se tiče očitavanja njih ću ubacivati bez problema.
Ovaj dio je daleko najzahtjevniji a za ostalo je preostalo male kontrole unosa npr. da datum izmjene ne bude manji od datuma ugradnje i sl.
__________________________________________________

Å to se tiče koda koji si mi poslao on radi bez problema, jedino Å¡to bi trebalo nakon knjiženja da se čekira polje u tablici izmjene. Ako nije čekirano onda kod puca jer kontrola greÅ¡ke propusti program dalje i deÅ¡ava se da je već ili uneÅ¡en vodomjer u tablici vodomjeri ili je promjenjen u tablici Kupci_Vodomjeri i nailazi na greÅ¡ku. Do toga sam doÅ¡ao kada je počelo pucati i kada sam očistio prethodne unose i krenuo sa čistom situacijom program radi bez problema, dakle samo bi trebalo ubaciti čekiranje prije zavrÅ¡rtka koda i to je to.
Ja sigurno neću prestati zavrÅ¡avati ovaj program, a Å¡to se tiče tvoje ideje da ga pojednostavnim probat ću i to kada vidim na kakve probleme ću naići s ovom aplikacijom!
Pozdrav!
↑  ↓

#27 24.03.2019 16:57
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
ispred
MsgBox "Uspesana izmena"
dodaj ovo
Me.Gotovo = True

to ce resiti problem sa cekirajne
↑  ↓

#28 25.03.2019 15:52
dzaga29 Van mreze
Clan
Registrovan od:22.01.2013
Postovi:26


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
Dva pitanja;
Može li kod za presretanje greške ako netko klikne "Spremi zapis" a nema zapisa na formi. (Invalid uso of Null) i drugo kako iz VB pokrenem makro - koja je naredba!
↑  ↓

#29 25.03.2019 16:25
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
evo ti naredna za pokrevajne macro :
DoCmd.RunMacro "Macro1"

Ja nikad ne koristam macroa , prema meni niko ne treba ih koristiti
Sve sta moze macro moze se napraviti i codom.
↑  ↓

#30 25.03.2019 16:31
Gjoreski Van mreze
Administrator
Registrovan od:02.02.2009
Postovi:1,828


Predmet:Re: VBA kod za traženje zapisa po tablicama i promjenu vrijednosti
evo ti za kontrola

PreuzmiIzvorni kôd (Visual Basic):
  1.  If IsNull(IDIzmjene) Or IDIzmjene = "" Or IDIzmjene = 0 Then
  2.      MsgBox "Prazan zapis"
  3.      ' ili dodas neka druga naredba
  4.     End Sub
  5.    End If
  6.    
  7.    If IsNull(Sifra_kupca) Or Sifra_kupca = "" Then
  8.      MsgBox "Niste uneli Sifra_kupca "
  9.      Me.Sifra_kupca.SetFocus
  10.      ' ili dodas neka druga naredba
  11.     End Sub
  12.    End If
  13.    
  14.    If IsNull(Broj_vodomjera) Or Broj_vodomjera = "" Then
  15.      MsgBox "Niste uneli Broj_vodomjera "
  16.      Me.Broj_vodomjera.SetFocus
  17.      ' ili dodas neka druga naredba
  18.     End Sub
  19.    End If
  20.    
  21.    '' Ovako dodas uslof IF za svako polje sta ti treba da se iskontrolira
↑  ↓

Stranice (6):1,2,3,4,5,6


Sva vremena su GMT +01:00. Trenutno vrijeme: 2: 17 am.