Newsgroup: it.comp.lang.visual-basic
Titolo: MySQL & VB

Qualcuno ha esperienze in merito all'uso di MySQL (usando MyODBC o altro...)
via Visual Basic?
--
         bye by[t]es... TuX!

Dipende da cosa vuoi fare..... chiedi e ti sarà "detto"....




Ho fatto un piccolo programma VB (6.0 SP4) che prevede l'uso di mysql
(3.23.28 gamma) ed il relativo driver ODBC (2.50.36), ho creato con
DBTools una tabella 'Anagrafica' in mysql.
In Visual Basic, utilizzando il dataenv ho creato una connessione al
db attraverso il driver odbc in questione.
Ho creato una form destinata a leggere/modificare (ma non aggiungere)
i dati in questione e tutto funziona perfettamente (almeno finchè mi
limito a leggere i dati). Ho creato quindi una seconda form simile
alla prima destinata ad inserire i dati, il codice resposabile di
tutto questo è il seguente:
With frmAnagrafica.adodcAnagrafica.Recordset
    .AddNew
    !Codice = txtCodice.Text
    !RagioneSociale = txtRagioneSociale.Text
    !PIVA = txtPIVA.Text
    !CF = txtCF.Text
    !Indirizzo = txtIndirizzo.Text
    !CAP = txtCAP.Text
    !Localita = txtLocalita.Text
    !Provincia = txtProvincia.Text
    !Contatto = txtContatto.Text
    !Telefono = txtTelefono.Text
    !Fax = txtFax.Text
    !Cellulare = txtCellulare.Text
    !EMail = txtEMail.Text
    .Update
End With
Il problema è che ogni tanto funziona ed ogni tanto si pianta in modo
casuale su una delle linee di assegnazione tirando fuori il messaggio
seguente:
"Si sono verificati errori in un operazione composta da più passaggi.
Controllare i singoli valori di stato"
P.S. C'è anche un campo !IDAnagrafica ma è un autoincremento.
	bye by(t)e[s]....TuX!

...

Io ho capito il problema per caso e dopo giorni di insulti ad ADO.
Il fatto è (almeno nel mio caso) che ADO (quel cretino) non tronca le
stringhe, ma si limita ad incacchiarsi.
Es:
    Campo Codice Text(4)
    Recordset.fields("Codice") = "Ciao"  'tutto bene
    Recordset.fields("Codice") = "Hello" ' errore!
WorkAround:
    Recordset.fields("Codice") = Left$("Hello",
Recordset.fields("Codice").DefinedSize)
Spero sia anche il tuo caso.
In cambio dimmi un po' per bene come si fa a connettersi con VB a mySQL, mi
interessa molto.
Esiste solo l'ODBC? Lo installa già lui?
Ciao.

Esiste solo l'ODBC? Lo installa già lui?
A dire il vero mi pare che esista una libreria COM per instanziare
direttamente un oggetto Database di tipo MySQL (devo ancora provare ad
usarla cmq). L'ODBC (che con immensa fantasia è stato battezzato
MyODBC) è arrivato alla versione 2.50.36 e quindi dovrebbe essere
preferibile (se dovesse darti dei problemi di installazione fammi
sapere che era capitato anche a me ma non mi ricordo, per ora, la
soluzione che avevo adottato).
Per quanto riguarda il 'come fare' è molto semplice (anche perchè io
amo la vita comoda e cerco di scrivere meno codice possibile).
Installi driver ODBC, server e client (è incluso nel package binario
del server: 3.23.28 gamma).
Crei un database e qualche tabella usando uno dei tools a corredo
(DBTools è il mio preferito ma ce ne sono altri).
Crei un DSN per accedere al medesimo database.
Volendo sconfinare nella pigrizia più estrema nel progetto VB
inserisci un datenv in cui crei una connessione (via odbc ovviamente)
che utilizzi il dsn in questione. Poi un command che si riferisce alla
tua tabella 'et volià...'.
Se ti servono altri lumi fammi sapere, magari ti mando il mio
programmino di prova così ci £$&%$/&%$/!!!@@ insieme.
       bye by(t)e[s]....TuX!

...

Ciao.
Sono ancora io.
Posso chiederti come accidenti si crea 'sto DNS?
Cioè, non capisco come configurare la connessione sulla mascherina
dell'odbc...
Poi dove lo hai trovato DBTools?
Hai risolto il tuo problema con ADO?
Se hai ancora dei problemi mandami pure tutto quello che vuoi (che non dia
un post da 10Mg :))
Ciao

 interessa molto.
Per accedere ad un database MySQL utilizzo la seguente connessione:
User = "marco"
pws = "paperino"
Host = "computer_Remoto_locale"
DbName = "DbProva"
strConnect = "ODBC" _
+ ";UID=" + User _
+ ";PWD=" + pws _
+ ";SERVER=" + Host _
+ ";DATABASE=" + DbName
Set wks = CreateWorkspace("DbProva", "", "", dbUseODBC)
Set db = wks.OpenDatabase("DbProva", dbDriverNoPrompt, False, strConnect)
NB: prima devi creare un User DSN nel pannello di controllo con nome
'DbProva'
poi apro e leggo il recordset nel seguente modo:
Set recSet = db.OpenRecordset("SELECT * from tabella", dbOpenDynaset)
Dim recSet As Recordset
While recSet.EOF = False
With recSet
pippo1 = !campo1
pippo2 = !campo2
.MoveNext
End With
Wend
 PS: io utilizzo i DAO 3.6 e non gli ADO

un post da 10Mg :))
Al max sono un 100aio i k...