[ dude72 @ 25.06.2004. 14:54 ] @
Treba na napravim u VBA-u macro za pretrazivanje Access-ove baze, ali mi bas ne uspeva.Problem nastaje kada treba da napravim slozeni upite sa promenljivim u upitima.Posto u poslednje vremu iglavnom radim u VB.NET-u, saljem moj problem
resen u .NET-u. Moze li neko da mi to "prepeva" na vb6(onaj deo koji je markiran) ili na neki drugi nacin da me uputi na resenje. Hvala.


Public Class Form1
Inherits System.Windows.Forms.Form
Dim cmd As New OleDb.OleDbCommand
Dim ds As New DataSet
Dim da As New OleDb.OleDbDataAdapter
Dim Odg1, Odg2 As String


Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
Odg1 = ComboBox1.SelectedItem
End Sub

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
Odg2 = ComboBox2.SelectedItem
End Sub

-------------------------------------------------------------------------------
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
cmd.CommandText = "SELECT MATERIJAL, ULICA, DUZINA, GODINA, UNUTRASNJI, Id FROM cijev WHERE (UNUTRASNJI =?) AND (MATERIJAL =?)"
cmd.CommandType = CommandType.Text
cmd.Connection = Conn
Conn.Open()
da.SelectCommand = cmd
da.SelectCommand.Parameters.Add("@UNUTRASNJI", 15).Value = Val(Odg1)
da.SelectCommand.Parameters.Add("@MATERIJAL", 15).Value = Odg2
da.Fill(ds, "CEV")
ListBox1.DataSource = ds.Tables("CEV")
ListBox1.DisplayMember = "ULICA"
Conn.Close()

End Sub
--------------------------------------------------------------------------------

End Class
[ mladenovicz @ 25.06.2004. 16:35 ] @
Probaj nesto ovako

Code:

Const mcstrUpit As String = "SELECT * FROM ImeTabele WHERE Kljuc=<VrednostKljuca> AND Ime='<VrednostImena>'"
Dim Qry As String

    Qry = Replace(mcstrUpit, "<VrednostKljuca>", NekaVrednost)
    Qry = Replace(Qry, "<VrednostImena>", NekaVrednost)

    Set adoRS = New adodb.Recordset
    adoRS.Open Qry, adoConn


Parametre stavljaj unutar <>, pa ih zameni odgovarajucim vrednostima.
[ dude72 @ 28.06.2004. 08:53 ] @
Hvala Ti, nikad na ovaj nacin nisam razmisljao, ali i dalje dobijam iste
poruku o gresci "No value given for one or more required parameter".
Sada zanam da se javlja zbog String promenljive

Code:

Private Sub Form_Load()
DataPath = App.Path & "Vodovod2001.mdb"
Dim AdoConn As ADODB.Connection
Dim ADOrs As ADODB.Recordset
Dim Qry As String
Dim a$
Const mcstrUpit As String = "SELECT * FROM CIJEV WHERE
UNUTRASNJI=<VrednostKljuca> and MATERIJAL='<VrednostImena>'"
Set AdoConn = New ADODB.Connection
AdoConn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data
Source=" & DataPath & ";Persist Security Info=False"
AdoConn.Open
a = 150
a$ = "PVC"  '********************** !!!!!!!!!!!!!!!!!!
Qry = Replace(mcstrUpit, "<VrednostKljuca>", a)
Qry =
Replace(Qry,"<VrednostImena>",a$)'**********************!!!!!!!!!!!!!! 
Set ADOrs = New ADODB.Recordset
ADOrs.Open Qry, AdoConn
Do While Not ADOrs.EOF
 List1.AddItem ADOrs.Fields("ULICA")
 ADOrs.MoveNext
Loop


Kao da resim problem? Kako da ukljucim da se u upitu mogu menjati OR i
AND?
Hvala ti unapred.
[ mladenovicz @ 28.06.2004. 14:33 ] @
Na pravom mestu si stavio znake uzvika.

Code:

a = 150
a$ = "PVC" '********************** !!!!!!!!!!!!!!!!!!


Uvedi dve promenljive (jednu za broj, drugu za string) i koristi Option Explicit. Nije ni cudo sto ne radi. Probaj ovaj kod, pa ce ti biti jasno zasto ne radi

Code:

Private Sub Form_Load()
    Dim a$
    
    a = 150
    a$ = "PVC"
    Debug.Print a, a$
End Sub


Citat:

Kako da ukljucim da se u upitu mogu menjati OR i AND?


Ne razumem sta hoces da napravis. Ili napravi dva upita, ili stavi u konstantu <Operand> pa menjaj sa AND ili OR.
[ dude72 @ 30.06.2004. 07:26 ] @
Hvala, pomoglo mi je da resim problem.