Grande problema query

mercoledì 11 ottobre 2006 - 10.30

Slave Profilo | Junior Member

allora cerco di spiegarvi il mio problema.....ho una query in access dove vengono inseriti tutti i campi della tabella ordini....nel campo id cliente ho impostato il criterio [cliente],in modo che all'apertura della queri mi richieda il codice del cliente e mi ricerchi tutti gli ordini fatti da quel cliente....e fin qui tutto bene....

adesso nel mio programma in vb ho inserito nella mia form una combo dove carico tutti gli id dei clienti...vorrei che selezionando un id questo vada a riempire il campo [cliente] visualizzato all'apertura della query,in modo da poter visualizzare in un datagrid tutti gli ordini di quel cliente....come posso fare???
Sono solo uno sballato in un mondo di sballati....

StefanoLep Profilo | Senior Member

Ciao, supponendo che l'ID del cliente tu lo abbia inserito come ItemData quando hai caricato la combo, un modo per recuperarlo potrebbe essere

Combo1.ItemData(Combo1.ListIndex)

da inserire nell'evento Click della combo.

Slave Profilo | Junior Member

no...forse non mi sono spiegato....il problema non e recuperare l'id della combo....ma inserilo nei criteri della queri....
Sono solo uno sballato in un mondo di sballati....

fasol Profilo | Junior Member

non puoi devi creare una query in vb ed eseguirla sempre in vb ....


meglio i perdenti xkè hanno la speranza di vincere...cosa che i vincenti nn hanno....

Slave Profilo | Junior Member

creare una query in vb????e come si fa???
Sono solo uno sballato in un mondo di sballati....

fasol Profilo | Junior Member

è semplice vedi se ti chiarisci le idee cn qst esempio


Private Sub Command1_Click()
Dim conn As ADODB.Connection
Dim rcst As ADODB.Recordset
Dim datasourceDB As String

Dim qryParam As String


conn.Open "Provider=microsoft.Jet.oledb.4.0; Data Source=" & App.Path & "\mioDB.mdb"
qryParam = "SELECT * FROM tbl WHERE cliente='" & Var & "'"
'apicini ^ ^

'gli apicini che vedi servono solo qnd il campo contiene
'un tipo di dato = a string

'se hai un campo di tipo numerico nn mettere gli apicini
'se hai un campo di tipo data metti #

'Var può essere qualunque valore preso da una proprietà di un
'oggetto oppure una costante oppure un indice di che so io

rcst.Open qryParam, conn, adOpenDynamic, adLockReadOnly

'NB ultimo campo della rcst.open decide come aprire il db
'in sola lettura(adLockReadOnly) oppure
'a completo uso (adLockOptimistic) letture e scrittura
'dopo con il rcst.fields potrai recuperare i valori dei campi e
'con i metodi rcst.movenext etc... potrai muoverti sulle righe


End Sub



fammi sapere




meglio i perdenti xkè hanno la speranza di vincere...cosa che i vincenti nn hanno....

Slave Profilo | Junior Member

questo e il mio codice:


Private Sub Form_Load()
Dim a, b
if form12.comboid <>""
a = Form12.Comboid
b = CInt(a)
end if
On Error Resume Next
stringa= "Provider=Microsoft.Jet.OLEDB.4.0;DataSource"
stringa = stringa & "U:\....\mydat.mdb"
qryParam = "SELECT * FROM qrydispsaldate WHERE cliente=" & b & ""

Set cn = New ADODB.Connection
Set sr = New ADODB.Recordset
Set rs = New ADODB.Recordset
cn.Open stringa
rs.CursorLocation = adUseClient
sr.CursorLocation = adUseClient
sr.Open ("SELECT * FROM Qrydispsaldate"), cn, 1
rs.Open qryParam, cn, 3, 3

If Form12.Comboid = "" Then
Set DataGrid1.DataSource = sr
DataGrid1.Refresh
Else
Set DataGrid1.DataSource = rs
DataGrid1.Refresh

End If


Set cn = Nothing
Set sr = Nothing
Set rs = Nothing
End Sub


il risultato e che se il datagrid si carica con il recordset sr tutto va bene, se invece lo carico con il recordset rs(quello dove uso la query) non visualizzo niente...
Sono solo uno sballato in un mondo di sballati....

StefanoLep Profilo | Senior Member

Hai già controllato che "b" sia diverso da 0? Hai provato anche ad aprire rs com apri sr
rs.Open qryParam, cn, 1

Slave Profilo | Junior Member

>Hai già controllato che "b" sia diverso da 0? Hai provato anche
>ad aprire rs com apri sr
>rs.Open qryParam, cn, 1



si...ho gia provato con entrambe le cose...ma niente...
Sono solo uno sballato in un mondo di sballati....

fasol Profilo | Junior Member

prova a usare la stessa sintassi di sr

meglio i perdenti xkè hanno la speranza di vincere...cosa che i vincenti nn hanno....

Slave Profilo | Junior Member

fatto....ma niente...il datagrid e sempre vuoto...
Sono solo uno sballato in un mondo di sballati....

StefanoLep Profilo | Senior Member

Ho provato il tuo codice sul mio pc e credo che l'errore possa stare solo in Form12.comboid. Infatti assegnando direttamente un valore a b il codice funziona. Ti allego il codice che ho utilizzato ma nella sostanza è identico al tuo
Combo1.AddItem "pippo" Combo1.ItemData(Combo1.NewIndex) = 23 Combo1.AddItem "peppe" Combo1.ItemData(Combo1.NewIndex) = 58 Combo1.AddItem "gino" Combo1.ItemData(Combo1.NewIndex) = 11 Dim a, b Dim Stringa As String Dim QryParam As String Dim CN As New ADODB.Connection Dim RS As New ADODB.Recordset Dim SR As New ADODB.Recordset b = 58 Stringa = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydat.mdb;Persist Security Info=False" QryParam = "SELECT * FROM qrydispsaldate WHERE cliente=" & b & "" Set CN = New ADODB.Connection Set SR = New ADODB.Recordset Set RS = New ADODB.Recordset CN.Open Stringa RS.CursorLocation = adUseClient SR.CursorLocation = adUseClient SR.Open ("SELECT * FROM Qrydispsaldate"), CN, 1 RS.Open QryParam, CN, 3, 3 Set grd.DataSource = RS grd.Refresh Set CN = Nothing Set SR = Nothing Set RS = Nothing

Slave Profilo | Junior Member

sono veramente uno stupido...l'errore stava che il campo del database si chiama IDCLIENTE e non cliente....grazie ragazzi!
Sono solo uno sballato in un mondo di sballati....
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5