Newsgroup: it.comp.lang.visual-basic
Titolo: per esperti di visual basic + ado+ datagrid+dataenvironment

Ciao a tutti,
Vi espongo il mio problema per cui non ho trovato una soluzione sia su
internet che su vari newsgroup e forum.
Sto utilizzando un database mysql associato a un controllo datagrid e a un
data environment.
Ho utilizzato un progetto dati.
Ho creato una nuova connessione al mio database "mediateca" (che ho
verificato positivamente)
sempre nel dataenvironment ho creato un command che ho chiamato VISUALIZZA
con una stringa tipo
"select titolo, genere....(insomma i campi che mi servono) from dati"
poi ho inserito nel form un datagrid e l'ho collegato al dataenvironment con
datamember=VISUALIZZA
Se uso cursori client mi visualizza i valori nella tabella ma non mi
permette di modificarli, se uso cursori server non visualizza nessun valore,
anzi il dgrid rimane con le sole 2 colonne x1 riga come se non fosse
associato a nulla.
Mi viene il dubbio che il datagrid sia solo per la lettura e non per la
modifica dei dati per la quale mi servono dei normali campi di testo.
inoltre ho provato con record dissociati quindi con cursori lato client,
statici e
lock impostato ad batch ottimistico.
Nel momento in cui vado a fare qualsiasi tipo di aggiornamento ottengo
l'errore:
:"you have an error in
your sql syntax.Check the manual that corresponds to your mysql server
version for the right sintax to use near '.'dati' SET 'prestato'=asdasdd
' where 'titolo'=V' "
Come se il provider myodbc che sto usando creasse una stringa sbagliata
Ecco il codice ceh uso per l'aggiornamento dei cursori:
If MsgBox("Vuoi salvare i cambiamenti in uscita?", vbYesNo) = vbYes Then
        DataEnvironment1.rsVisualizza.UpdateBatch
Else
        DataEnvironment1.rsVisualizza.CancelBatch
End If
Visualizza è il command ed rsvisualizza dovrebbe essere il recordset che
crea automaticamente il dataenvironment (secondo Balena).
Dove sbaglio?
Se ho tralasciato di dirvi qualcosa fatemelo sapere
Ciao
Domenico

 modifica dei dati per la quale mi servono dei normali campi di testo.
Mi č capitata la stessa cosa su database access e btrieve via odbc.
Funzionava tutto in sola lettura, ma la colpa non era del datagrid.
Il problema l'ho risolto mandando a quel paese il dataenvironment.
Di piů non so dirti.
    danilo

 Ciao a tutti,
ma non puoi levare di mezzo il datenvironment e dare giù di codice?
...che andrebbe anche un pelino più veloce???
...e sarebbe scolasticamente più utile?
Ad esempio
come fa a non funzionare una cosa del genere?
lavoro client ...
Connetto.....il database.....
SELECT
...riempio un recordset....
STacco la connessione (facoltativo)
...il recordset lo aggancio ad una griglia qualsiasi....
visualizzo.....la griglia serve come visualizzatore dati...
edito una riga.....
......
clikko su update...o intercetto un evento......
...costruisco la query di update.....
riattacco la connessione al database
... faccio eseguire la query da un command......
....sto attento ad eventuali errori di conflitti etc etc.....
....tutto ok...rinfresco il recordset......
questa procedura è abbastanza "neutra" rispetto al database scelto....
e comunque se la query di aggiornamento non va...spesso la colpa è di una
integrità referenziale settata male!!!
tutto quanto sopra IMHO!
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Demo classe vb.NET :
WodkaThumb 
www.villaceleste.it
  click su "spippolando e
Programmando"
---
Messaggio scannerizzato e certificato "Virus free" da AVG free edition.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.775 / Virus Database: 522 - Release Date: 08/10/2004

 integritŕ referenziale settata male!!!
impossibile. c'č una sola tabella e nessun vincolo.
Ciao
Domenico

 visualizzo.....la griglia serve come visualizzatore dati...
...
Dopo un intero pomeriggio non riesco a visualizzare il recordset (ho visto
che comunque lo riempio) nel datagrid.
Posto il codice:
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.ConnectionString = "driver={mysql odbc 3.51
driver};server=localhost;database=mediateca"
cn.Open , "root", "nanonano"
'apro il recordset
rs.CursorLocation = adUseServer
Set rs.ActiveConnection = cn
rs.Source = "dati"
rs.Open , cn ', adOpenStatic, adLockBatchOptimistic
Set DGMediateca.DataSource = rs
se non do un valore a datamember (io gli ho dato rs) mi da errore
Dove sbaglio?
Ciao

 Dove sbaglio?
Se non utilizzi il dataenvironment
    danilo

 Set DGMediateca.DataSource = rs
se tu chiami GRID la tua DATAGRID
 With Grid
   Set .DataSource = Rs
   .ReBind
End With
il rebind serve a dire "OK GRIGLIA adesso t'ho detto cosa voglio
visualizzare...recupera un po tu la sequenza dei campi e assegna i nomi alle
colonne!...poi fammi vedre che hai fatto!"
...prova!
-- 
Il Wodkino Nazionale č a : 
www.martek.it


Dove sbaglio?
Non ho capito il senso di questa ultima frase. Datamember non appare
nel tuo codice.
Ciao!