PDA

Visualizza la versione completa : [VB6] Data Environment


Petra
17-11-2005, 03:09
Ciao a tutti...sto realizzando un progettino utlizzando il data environment ed un datagrid. Tutto va bene fin quando decido di inserire sul form una combo e una text in modo da poter scegliere il campo e il testo per una ricerca veloce sull'insieme di recordset...mi appresto a scrivere questo codice sull'evento change del textbox...


DataEnvironment.rsTabella.Find Me.cmbRicerca.Text & " Like '" & Me.txtRicerca.Text & "'"

...ma quando scrivo sulla textbox non succede nulla e il datagrid continua a visualizzarmi gli stessi dati senza cambiare di una virgola...ho pensato subito che poteva essere un problema d'aggiornamento del data environment ed infatti ho cambiato il codice precedente in questo modo...


DataEnvironment.rsTabella.Find Me.cmbRicerca.Text & " Like '" & Me.txtRicerca.Text & "'"
MsgBox DataEnvironment.rsTabella.RecordCount

...e il msgbox mi restituisce sempre 12 che sarebbe il numero di record totali presenti nel recordset del tabella.
Ho provato a cercare il metodo refresh del data environment ma non sono riuscito a trovarlo...nn so più che fare!!!

La mia collega dice che è un difetto del data environment ma secondo me un altro metodo per la ricerca dei record col data environment ci deve essere!!

Ringrazio per l'eventuale aiuto!!

Petra
17-11-2005, 12:05
:(

Petra
17-11-2005, 17:01
Niente da fare?! :(

Brainjar
17-11-2005, 17:19
Prova a fare il debug dell'applicazione e metti un breakpoint
sull'istruzione :


DataEnvironment.rsTabella.Find Me.cmbRicerca.Text & " Like '" & Me.txtRicerca.Text & "'"


Quando il codice esegue questa istruzione ?

Premesso che all'inizio sia la cmbRicerca.Text che txtRicercaText
possono valere "", e questo spiega perchè ti estrae tutti 12 record
presenti in tabella.

Mi chiedo quindi 'dove' hai messo l'istruzione di cui sopra.
Dovresti inserirla nell'evento _Change della txtRicercaText.
Ma in questo modo ti scatena una Find ad ogni carattere digitato.

Forse ti converrebbe mettere un bottone 'Cerca' e nel Click di
questo bottone mettere l'istruzione.

Petra
17-11-2005, 17:27
Sta sera ci provo e ti farò sapere...per ora grazie!! :)

Petra
18-11-2005, 03:45
In pratica funziona anche senza pulsante il find, ma non è quello che mi serve...il find mi segna col bookmark il record, ma nn è quello che voglio.

Quello che voglio fare è che all'evento change del textbox mi faccia una select (query) e aggiorni il data environment con quest'ultima...il punto è che nn so dove scrivere questa query nel data environment (parlo nella fase di esecuzione e nn quella di progettazione).

Quando usavo un semplice controllo adodc mi bastava scrivere questo codice sull'evento change della textbox...


adodc.DataSource = "select * From Tabella Where Campo = 'Valore'"

...col data environment come devo fare in fase di esecuzione ? ?

Brainjar
18-11-2005, 10:39
Non potresti utilizzare oggetti ADO ?
Sono potenti, flessibili e semplici da utilizzare.

Per rispondere al tuo quesito, comunque, la select, intesa come
stringa tipo "SELECT * FROM TABELLA ..." la fai eseguire all'oggetto
connection del data environment. Quindi nel Click del bottone avrai :




With DataEnvironment1 ' sostituisci i nomi degli oggetti con i tuoi
.Connection1.Open
.Connection1.Execute("SELECT * FROM TABELLA ...")
End With


Dopo la execute il data environment è aggiornato.

Petra
18-11-2005, 11:20
Ti ringrazio per la risposta, appena vado al lavoro provo come hai detto...a pensare che sono passato dagli adodc al data environment per questo progetto.

Brainjar
18-11-2005, 11:26
Mi riferisco agli oggetti ADO ADODB.Connection e
ADODB.RecordSet, non agli ADODC.
Non sono la stessa cosa.

Petra
18-11-2005, 15:05
Originariamente inviato da Brainjar
Mi riferisco agli oggetti ADO ADODB.Connection e
ADODB.RecordSet, non agli ADODC.
Non sono la stessa cosa.

Ho utilizzato anche gli ADODB, ma non riesco proprio a strutturare il tutto!!!

Loading