Bosna i Hercegovina



#1 29.06.2013-18:27
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Dlookup vo VB
Pozdrav do site forumdzii.
Eve veke nekoe vreme ne sum aktiven na forumov pa zatoa malku da se aktiviram.
Rabotam edna aplikacija vo VB studio e sega dodeka rabotev vo MS ACCESS dosta cesto gi koristev funkciite Dlookup Dmax Dmin DFirst DLast DSum DCount i taka no vo VB studiovo nema takvi funkcii pa pocnav sam da gi pravam
Pocnav so funkcijata Dlookup koja najmnogu ja koristam bidejki vo mnogu slucai mi e potreben samo eden podatok .
Sega mi treba od vas poiskusnite vo vb da mi dadete nekoi soveti i da mi pomognete da ja napravam funkcijata identicna so onaa vo MS ACCESSOT
Eve ja Funkcijata:

DownloadIzvorni kod (Visual Basic):
  1. Public Function DLookup(Pole As String, Tabela As String, Optional ByVal Uslov As Variant) As Variant
  2.    On Error Resume Next
  3.    Dim rsdl As ADODB.Recordset
  4.    Dim strsql As String
  5.    
  6.    If IsNull(Uslov) Or Uslov = "" Then
  7.       strsql = "SELECT " & Tabela & "." & Pole & " FROM " & Tabela
  8.    Else
  9.       strsql = "SELECT " & Tabela & "." & Pole & " FROM " & Tabela & " WHERE ((" & Tabela & "." & Uslov & "))"
  10.    End If
  11.    Set rsdl = cn.Execute(strsql)
  12.    
  13.    If Not (rsdl.EOF And rsdl.BOF) Then
  14.       rsdl.MoveFirst
  15.       DLookup = rsdl(Pole).Value
  16.    Else
  17.       DLookup = ""
  18.    End If
  19.    
  20. End Function

sega kade zastanav
Kako da napravam vo funkcijava da ako ne vnesam uslov samata funkcija da prepoznava dali ima uslov ili nema
toa e ova Optional ByVal Uslov As Variant
sega treba da stavam na primer r=Dlookup("Sifra","tblArtikli","") za da funkcionira
drugo sto sakam da napravam e vo uslovot avtomatski da se prepoznava tipot na uslovot dali text ,bolean ,integer,date drugi podatoci.
Ova e za pocetok a posle ke vidime sledno od koga ke go napravime ova
Pozdrav
↑  ↓

#2 30.06.2013-00:15
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: Dlookup vo VB
DownloadIzvorni kod (Visual Basic):
  1. Public Function DLookupZ(Polje As String, Tabela As String, Imebaze As String, Optional Uslov = "") As Variant
  2. Dim cnn As New ADODB.Connection
  3. Dim Rs As New ADODB.Recordset
  4. Dim StrSQL As String
  5.  
  6. StrSQL = "SELECT " & Polje & " FROM " & Tabela
  7. If Uslov <> "" Then
  8. StrSQL = StrSQL & " WHERE " & Uslov
  9. End If
  10. cnn.Open _
  11.     "Provider=Microsoft.Jet.OLEDB.4.0;" _
  12.     & "Data Source=" & Imebaze & ";"
  13. Rs.Open StrSQL, cnn, _
  14.     adOpenForwardOnly, adLockReadOnly
  15. If Not (Rs.EOF And Rs.BOF) Then
  16. Rs.MoveFirst
  17. DLookupZ = Rs(Polje).Value
  18. Else
  19. DLookupZ = ""
  20. End If
  21. End Function

Poziv:

Dim Vrijednost
Vrijednost=Dlookupz("ImePolja","ImeTabele","C:\Direktorij\ImeBaze.mdb","ImePolja='Vrijednost'")

Ne zaboravi reference.
Pozdrav
↑  ↓

#3 02.07.2013-13:05
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: Dlookup vo VB
Ova e dobro no
Dim Vrijednost
Vrijednost=Dlookupz("ImePolja","ImeTabele","C:\Direktorij\ImeBaze.mdb","ImePolja='Vrijednost'")
ova vaka funkcionira
no sekogas treba uslovot da go redam kako String a jas sakam uslovot kako da go napravam avtomatski da se prepoznava dali e Integer date bolean .
i drugo sto sakam e da mozam vo podatokot sto go vadam da stavam dve ili tri polijna i da dobijam eden rezultat

Dim Vrijednost
Vrijednost=Dlookupz("[ImePolja]+[ImePolja1]-[ImePolja3]","ImeTabele","C:\Direktorij\ImeBaze.mdb","ImePolja='Vrijednost'")
nekogas moze da bide edno pole od koe citam nekogas dve pa i poveke
pozdrav
↑  ↓

#4 02.07.2013-13:42
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: Dlookup vo VB
Citat:
no sekogas treba uslovot da go redam kako String a jas sakam uslovot kako da go napravam avtomatski da se prepoznava dali e Integer date bolean .

To nije moguce ni u pravoj DLookup jer uslov uvjijek saljes kao string.
Primjer:
Imepolja=22
Imepolja='Nekistring'
Imepolja=True
Imepolja like '*Nesto'
itd.
Znaci to regulises ulaznim parametrom i on je uvije string pa se nemoze znati jeli polje po kome trezis string.
Moglo bi se to napraviti ali bi se poprilicno iskomplikovalu.
Umjesto ulaznog parametra uslov morali bi napraviti tri i to:
NazivPolja Operator i uslov.
Ovim opet nebi mogli obuhvatiti Beetven jer tada imaju 2 uslova kao i kada trazimo po dva polja.
Sve u svemu mislim da to nebi bilo funkcionalno.
Citat:
i drugo sto sakam e da mozam vo podatokot sto go vadam da stavam dve ili tri polijna i da dobijam eden rezultat
DLokup vraca samo jednu informaciju
Inace procedura vraca samo jednu informaciju.
Uslov moze biti sa vise polja.
Primjer:
ImePolja=12 AND ImedrugogPolje='nekistr'
Pozdrav
↑  ↓

#5 03.07.2013-13:08
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: Dlookup vo VB
ok e za uslovot
E sega sa rezultatot
Jas ke dobijam samo eden podatok koj ke se sostoi od prvoto i vtoroto pole
eve kako ke izgleda

Rezultat=Dllokup("[Kolicina]*[Cena]","tblNaracki","ID_Naracki=1222")
Rezultat = Kolicina * Cena
Jas treba da go smenam SQL Stringot

StrSQL = "SELECT " & Polje & " FROM " & Tabela

Jas sakam da izvrsam nekekva operacija nad dve ili polijna mnozejne ,delejne i tn
So dve imam probano vo access i funkcionira ok za tri nemem probano

Pozdrav

Mislam deka me razbra sto sakam
↑  ↓

#6 03.07.2013-14:40
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: Dlookup vo VB
Samo promijeni ovo u proceduri:
17.DLookupZ = Rs(Polje).Value
a stavi ovo
DLookupZ = Rs(0).Value
Pozdrav
↑  ↓

#7 05.07.2013-12:22
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: Dlookup vo VB
Eve i drugi tri korisni funkcii
DownloadIzvorni kod (Visual Basic):
  1. Public Function DCount(ByVal Pole As String, ByVal Tabela As String, Optional ByVal Uslov = "")
  2.    
  3.    Dim rsdc As ADODB.Recordset
  4.    Dim StrSQL As String
  5.    Dim I As Integer
  6.        I = 0
  7.    If IsNull(Uslov) Or Uslov = "" Then
  8.       StrSQL = "SELECT " & Tabela & "." & Pole & " FROM " & Tabela
  9.    Else
  10.       StrSQL = "SELECT " & Tabela & "." & Pole & " FROM " & Tabela & " WHERE ((" & Tabela & "." & Uslov & "))"
  11.    End If
  12.    Set rsdc = cn.Execute(StrSQL)
  13.    
  14.    If Not (rsdc.EOF And rsdc.BOF) Then
  15.           rsdc.MoveFirst
  16.       Do While Not rsdc.EOF
  17.          I = I + 1
  18.          rsdc.MoveNext
  19.           If rsdc.EOF Then
  20.              Exit Do
  21.           End If
  22.       Loop
  23.   DCount = I
  24.       Exit Function
  25.    Else
  26.      DCount = ""
  27.      Exit Function
  28.    End If
  29.  
  30. End Function
  31.  
  32. Public Function DMax(ByVal Pole As String, ByVal Tabela As String, Optional ByVal Uslov = "")
  33.    ' On Error Resume Next
  34.      Dim rcMax As Recordset
  35.       Dim strMax As String
  36.            
  37.               If IsNull(Uslov) Or Uslov = "" Then
  38.                  strMax = "SELECT Max(" & Tabela & "." & Pole & ") AS MaxVrednost " & " FROM " & Tabela & ""
  39.               Else
  40.                  strMax = "SELECT Max(" & Tabela & "." & Pole & ") AS MaxVrednost " & " FROM " & Tabela & " WHERE (" & Tabela & "." & Uslov & ")"
  41.               End If
  42.        
  43.       Set rcMax = cn.Execute(strMax)
  44.       If IsNull(rcMax!MaxVrednost) Then
  45.          DMax = ""
  46.       Else
  47.          DMax = rcMax!MaxVrednost
  48.       End If
  49.      rcMax.Close
  50.  
  51.  
  52. End Function
  53.  
  54. Public Function DMin(ByVal Pole As String, ByVal Tabela As String, Optional ByVal Uslov = "")
  55.      
  56.       Dim rcMin As ADODB.Recordset
  57.       Dim strMin As String
  58.            
  59.               If IsNull(Uslov) Or Uslov = "" Then
  60.                  strMin = "SELECT Min(" & Tabela & "." & Pole & ") AS MinVrednost " & " FROM " & Tabela & ""
  61.               Else
  62.                  strMin = "SELECT Min(" & Tabela & "." & Pole & ") AS MinVrednost " & " FROM " & Tabela & " WHERE (" & Tabela & "." & Uslov & ")"
  63.               End If
  64.        
  65.       Set rcMin = cn.Execute(strMin)
  66.       If IsNull(DMin = rcMin!MinVrednost) Then
  67.           DMin = ""
  68.       Else
  69.           DMin = rcMin!MinVrednost
  70.       End If
  71.     rcMin.Close
  72. End Function
↑  ↓

#8 05.07.2013-12:35
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: Dlookup vo VB
I sta sad.
Jel treba i ove prepraviti?
Pozdrav
↑  ↓

#9 05.07.2013-18:07
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: Dlookup vo VB
Ne treba da prepravim samo staviv da pogledate ako e dobro moze da se stavi vo Korisan cod
↑  ↓

#10 05.07.2013-20:59
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: Dlookup vo VB
Fali ti ovdje putanja do baze.
Ovo ce raditi u accessu ali u vb nece.
Pozdrav
↑  ↓

#11 06.07.2013-08:46
Gjoreski Offline
Super Moderator
Registrovan/a od: 02.02.2009-22:24
Komentari: 1,489


Subject: Re: Dlookup vo VB
Jas konekcija cn ja imam staveno na pocetok koga se pokreva i samiot program odnosno vo sub Main
DownloadIzvorni kod (Visual Basic):
  1. Public cn As ADODB.Connection
  2. Public Baza As String
  3. Public rs As ADODB.Recordset
  4. Public rsGrArtikli As ADODB.Recordset
  5. Public ID_Korisnik As Integer
  6. Sub Main()
  7. On Local Error GoTo Error_Main:
  8. Set cn = New ADODB.Connection
  9. '--------------------------  MySql Server so ini file ---------------------------------
  10. 'cn.ConnectionString = "Driver={Mysql ODBC 5.1 Driver}; Server=" & ReadIniValue(App.Path & "\Server.ini", "ServerSetup", "Server") & _
  11. '";port=3306; database=" & ReadIniValue(App.Path & "\Server.ini", "ServerSetup", "BazaDB") & _
  12. '"; user=" & ReadIniValue(App.Path & "\Server.ini", "ServerSetup", "User") & _
  13. '"; password=" & ReadIniValue(App.Path & "\Server.ini", "ServerSetup", "Password") & "; option=3;"
  14. '--------------------------  MsAccess Baza ---------------------------------------------
  15. cn.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};" & _
  16.                      "Dbq=DB_Sporedba.mdb;" & _
  17.                      "DefaultDir=" & App.Path & ";" & _
  18.                      "Uid=Admin;Pwd=;"
  19. '---------------------------------------------------------------------------------------
  20. Baza = App.Path & "\" & "DB_Sporedba.mdb"
  21. cn.Open
  22.  
  23. If cn.State = adStateOpen Then
  24.    frmLogin.Show
  25. End If
  26.  
  27. Main_Exit:
  28.    Exit Sub
  29.  
  30. Error_Main:
  31. 'MsgBox Err & "-->>>  " & Error(Err)
  32.  
  33. If Err = -2147467259 Then
  34.     Call MsgBox("PROBLEM SO POVRZUVAJNE SO BAZATA  ", vbOKOnly + vbCritical + vbApplicationModal + vbDefaultButton1, "VNIMANIE")
  35.      Resume Main_Exit:
  36. End If
↑  ↓

#12 06.07.2013-10:51
zxz Offline
Administrator
Registrovan/a od: 03.02.2009-16:22
Komentari: 9,721


Subject: Re: Dlookup vo VB
Da sad stim ce da radi.
Mozes to staviti u koristan kod.
Pozdrav
↑  ↓

Stranice (1): 1

All times are GMT +01:00. Current time: 19.07.2018-22:33.