Centar za edukaciju-BiH


Stranice (2):1,2

#1 08.02.2012 13:00
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Pitanja u vezi procedura i pisanja koda
Ovdje mozete postavljati pitanja u vezi pisanja procedura kao i nejasnoce u nekoj proceduri koju ste negdje nasli ili neko drugi napisao pa nije pojasnio.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#2 08.02.2012 13:24
White Man Van mreze
Clan
Registrovan od:11.03.2011
Postovi:341


Predmet:Re: Pitanja u vezi procedura i pisanja koda
Jel mozete da nam nakacite objasnjenja za skracenice u procedurama i da ih ispisete sta sve znaci tipa: Dim, String, msgbox... i tako dalje i onda da nam objasnite kako se pisu procedure? Hvala puno unapred. Pozdrav
↑  ↓

#3 08.02.2012 13:32
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Pitanja u vezi procedura i pisanja koda
VB Å kola na ovom forumu. Čitaj je malo.
VB Å¡kola
Pozdrav
↑  ↓

#4 08.02.2012 13:43
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Pitanja u vezi procedura i pisanja koda
Sve naredbe je nemoguce ispisati jer ih ima puno.
Cak to nema niti u jednoj knjizi.
Mozda ima neka knjiga koja opisuje naredbe ali samo iz biblioteke brun i jos poneke standardne.
Mozete pisati po neku naredbu koju nadjete a neznate sta znaci da bi dobili znacenje ili pak upute kako se i za sta koristi.

Dim
Dim sluzi za dimenzionisanje memorijskih variabli.
U vebe nije obavezno dimenzionisanje variabli ukoliko na pocetku modula ne unesemo opciju
Option explicit
Ukoliko na vrhu modula postoji ovo onda je obavezno dimenzionisanje.
Dimenzionisanje variabli znaci odvajanje memorijskog prostora za odredjeni podatak.
Primjer
Dim nekiProizvoljniNazi as Neki_tip

iz primjera se vidi da pri dimenzionisanju neke varijable moramo joj dati naziv i odrediti tip variable.
Tip variable nije obavezan u VB ali je pozeljan jer ako ne odredimo tip onda ce se variabla ponasati kao tipa variant a to znaci da moze biti bilo koji tip.

Tipovi podataka imaju opisani u ovoj temi:
http://www.icentar.ba/showtopic.php?id=1149

Doseg variabli moze biti razlicit.

Ukliko variablu dimenzionisemo na vru modula i deklarisemo je sa global.

Global nekiNaziv as NekiTip.

Tada ce se podaci u ovoj variabli zadrzati na nivou citave aplikacije.
Znaci podaci se nece gubiti dokle god smo u aplikaciji.
Napomena:
Ova globalna variabla se moze dimenzionisati samo u Single modulu a ne u modulu od neke forme.
Ako pak dimenzionisemo neku var. na vrhu modula kao
Dim NekiNaziv as NekiTip

U ovako dimenzionisanoj variabli podaci ce biti zadrzani na nivou objekta.
Ako je to modul od forme na nivou forme a ako je zaseban modul onda na nivou tog modula.

Dimenzionisanje variable u samoj proceduri sacuvat ce podatke samo dok se odvija ta procedura.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 28.02.2012 11:16
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Pitanja u vezi procedura i pisanja koda
Zar u ovoj temi nema niko vise nista pitati?
Ja sam mislio da ce biti mnogo vise pitanja.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#6 28.02.2012 14:54
pmiroslav Van mreze
Clan
Registrovan od:02.02.2009
Postovi:1,458


Predmet:Re: Pitanja u vezi procedura i pisanja koda
Evo ja ću pitati.
Meni ponekad nije najjasnije kako se procedura iz modula poziva iz druge procedure, sa forme ili iz querya.
Evo npr. kako bi pozvao ovu tvoju funkciju iu primjera
PreuzmiIzvorni kôd (vbnet):
  1. Function NadjiVrijednost(ImeTabele As String, ImePolja As String, _
  2.                         Vrijednost As Variant) As Boolean
  3.  
  4. Dim db As Database
  5. Dim rst As DAO.Recordset
  6. Dim SQL, A As Variant
  7. '*****************************************************************************************
  8. 'Ova funkcija sluzi za trazenje zadanog podatka u zadanoj Tabeli u
  9. 'zadatom polju i vraca vrijednost
  10. 'ako ima True i ako nema podatka False
  11. 'Ulazne vrijednosti su: ImeTabela kao string ImePolja kao string i
  12. 'Vrijednost kao trazena vrijednost
  13. 'Ako je vrijednost string onda se pise pod znacimea navoda
  14. 'Ako je vrijednost datum onda se pise kao: "#05/05/2000#"
  15. 'Ako je vrijednost Yes/No onda se pise kao: Yes=-1 No=0
  16. 'Ako je vrijednost broj?ana onda se pise broj bez znakova navoda
  17. 'Autor funkcije(ZXZ)
  18. '********************************************************************************************
  19. Set db = CurrentDb() 'Setovanje baze
  20. A = Val(Vrijednost) 'Brojcana vrijednost ulaznog podatka ako je ima  
  21. If A <> Vrijednost Then 'Ako je brojcana vrijednost razlicita od _
  22.                         vrijednosti onda nije broj
  23. If Left(Vrijednost, 1) <> "#" Then 'Ako je na prvom mjestu znak # _
  24.                                     onda je datum
  25. Vrijednost = "'" & Vrijednost & "'" 'Posto je string treba dodati znake _
  26.                                     navoda " "
  27. End If
  28. End If
  29. SQL = "SELECT " & ImeTabele & "." & ImePolja & " FROM " & ImeTabele _
  30. & " WHERE (((" & ImeTabele & "." & ImePolja & ")=" & Vrijednost & "));"
  31.  
  32. Set rst = db.OpenRecordset(SQL) 'Setovanje tabele
  33.  
  34. If rst.RecordCount = 0 Then 'Ako je broj redova 0 tada
  35. NadjiVrijednost = False ' NadjiVrijednost je False
  36. Else 'Inace
  37. NadjiVrijednost = True 'NadjiVrijednost je True
  38. End If
  39. Set db = Nothing
  40. rst.Close 'Zatvori rekordset(Qyery)
  41. End Function

Pozdrav
↑  ↓

#7 28.02.2012 16:05
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Pitanja u vezi procedura i pisanja koda
Ova procedura ima zaglavlje:
Citat:
Function NadjiVrijednost(ImeTabele As String, ImePolja As String, _
Vrijednost As Variant) As Boolean

Sto znaci da pored naziva ima jos i 3 ulazna parametra i to dva tipa string i treci tipa variant.
Kako se poziva:
-Mozemo je pozvati it druge provcedure
Primjer:
Function Pozivna()
Dim a as boolean
a = NadjiVrijednost("kupci", "Kupac", "Kupac3")
End Function
A ima vrijednost true ili false zavisno dali postoji u tabeli kupci u polju kupac vrijednost kupac3.
Znaci u ovom slucaju procedura vraca vrijednost true ili false.
Uloliko procedura ne vraca nikakvu vrijednost mozemo je pozvati i ovako.
NadjiVrijednost "kupci", "Kupac", "Kupac2"
U ovom slucaju nemamo variable a koja ce prihvatiti vrijednost koju vraca procedura.
Znaci ako procedura ne vraca vrijednost nego samo nesto odradjuje onda se moze i ovako pozvati.

Procedura moze biti napisana i kao Contril source na formi neke kontrole na formi:
Tada podatak na kontroli poprima vrijednost iz procedure a pise se u controlsource kontrole:
=NadjiVrijednost("kupci";"Kupac";"Kupac2")

Takodje se moze pozvati na neki event forme ili polja napr na on load.
=NadjiVrijednost("kupci";"Kupac";"Kupac2")
Kako ste primijetili delimiter izmedju variabli u ostalim slucajevime nije zarez ','nego tackazarez ';'.

Procedura moze biti pozvana i sa Rekordsource ali tada mora biti i dimenzionisana kao rekord.

Proceduru mozemo pozvati i iz Query-a.
Jenostavno dopisemo jedno polje u Kuery-a i pozovemo proceduru.
Ovo se koristi kada su podaci ulaznih parametara procedure citaju iz rekorda.
Ukoliko su oni razliciti za svaki rekord procedura ce se izvrsiti onoliko puta koliko ima rekorda.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#8 27.05.2012 17:09
Branestan Van mreze
Clan
Registrovan od:07.05.2012
Postovi:114


Predmet:Re: Pitanja u vezi procedura i pisanja koda
Da ne bih otvarao novu temu, nastaviću ovdje.

Funkcija:

Public Function SaldoPozitivno(ByVal pArt As String) As Double
On Error GoTo Err_SaldoPozitivno

Dim rst As ADODB.Recordset
Dim SumaKol As Double

Set rst = New ADODB.Recordset

rst.CursorLocation = adUseClient


MsgBox pArt


rst.Open "SELECT Ulaz1.kol As Kol" & _
" FROM Ulaz1, Ulaz " & _
" WHERE Ulaz.UlazId = Ulaz1.UlazId And Ulaz1.art = '" & pArt & "' " & _
" UNION SELECT -Izlaz1.kol As Kol" & _
" FROM Izlaz, Izlaz1, Ulaz1 " & _
" WHERE Izlaz.IzlazId = Izlaz1.IzlazId and Izlaz1.UlazId = Ulaz1.UlazId And Izlaz1.art = '" & pArt & "'", _
CurrentProject.Connection, adOpenKeyset, adLockOptimistic


SumaKol = 0
Do Until rst.EOF
SumaKol = SumaKol + rst!Kol
rst.MoveNext
Loop


SaldoPozitivno = SumaKol

rst.Close

Set rst = Nothing


Exit_SaldoPozitivno:
Exit Function

Err_SaldoPozitivno:
MsgBox Err.Description
Resume Exit_SaldoPozitivno

End Function

Gdje grijeÅ¡im kad je pozivam na način kako je navedeno u nastavku?

Private Sub Text0_LostFocus()
Dim a As String
Dim b As Double

a = Me.Text0
b = SaldoPozitivno("a")

Me.Text2 = b

End Sub
↑  ↓

#9 27.05.2012 17:32
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Pitanja u vezi procedura i pisanja koda
Kao prvo nemas ado konekcije:
Imas ado konekciju u koristan kod u forumu arhiva
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
sql="SELECT * FROM Customers"
rs.Open sql,conn

Ovo neznam dali ti treba
rst.CursorLocation = adUseClient'-Označava mjesto kursora usluge.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 27.05.2012 17:44
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,611


Predmet:Re: Pitanja u vezi procedura i pisanja koda
PreuzmiIzvorni kôd (Visual Basic):
  1. Public Function SaldoPozitivno(ByVal pArt As String) As Double
  2.  On Error GoTo Err_SaldoPozitivno
  3.  Dim cn As ADODB.Connection
  4.  Dim rst As ADODB.Recordset
  5.  Dim SumaKol As Double
  6.  Dim SQL As String
  7.  
  8. SQL = "SELECT Ulaz1.kol As Kol" & _
  9.  " FROM Ulaz1, Ulaz " & _
  10.  " WHERE Ulaz.UlazId = Ulaz1.UlazId And Ulaz1.art = '" & pArt & "' " & _
  11.  " UNION SELECT -Izlaz1.kol As Kol" & _
  12.  " FROM Izlaz, Izlaz1, Ulaz1 " & _
  13.  " WHERE Izlaz.IzlazId = Izlaz1.IzlazId and Izlaz1.UlazId = Ulaz1.UlazId And Izlaz1.art = '" & pArt & "'"
  14. Set cn = CurrentProject.AccessConnection
  15. Set rst = New ADODB.Recordset
  16. With rst
  17.       Set .ActiveConnection = cn
  18.       .Source = "SELECT * FROM tblProdaja"
  19.       .LockType = adLockOptimistic
  20.       .CursorType = adOpenKeyset
  21.       .Open
  22.    End With
  23.  
  24.  
  25.  
  26.  MsgBox pArt
  27.  
  28.  SumaKol = 0
  29.  Do Until rst.EOF
  30.  SumaKol = SumaKol + rst!Kol
  31.  rst.MoveNext
  32.  Loop
  33.  
  34.  
  35.  SaldoPozitivno = SumaKol
  36.  
  37.  rst.Close
  38.  
  39.  Set rst = Nothing
  40.  
  41.  
  42. Exit_SaldoPozitivno:
  43.  Exit Function
  44.  
  45. Err_SaldoPozitivno:
  46.  MsgBox Err.Description
  47.  Resume Exit_SaldoPozitivno
  48.  
  49.  End Function

Ne ulazim U tacnost SQL upita.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

Stranice (2):1,2


Sva vremena su GMT +01:00. Trenutno vrijeme: 8: 50 pm.