Probléme parsage de base de donnée Vb6

talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 - 2 août 2005 à 16:52
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 - 3 août 2005 à 12:30
Bonjour tout le monde. Je cherche à récupérer des valeurs d'une table de ma base de donnée sous free pour les comparer. Donc j'ai cherché comment accéder à une base de donnée MySql sous vb6, mais aucun code ne marche. Du moins je n'arrive pas à récupérer les valeurs inscrites dans ma table. Alors je cherche quelqu'un de charitable qui aurait un code ou une indiquation pour m'aider

Merci

6 réponses

talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 1
2 août 2005 à 17:21
En fait il me dit cette erreur là : [MySql][ODBC 3.51 Driver] Can't connect to mysql server on 'sql.free.fr' (10061)
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
2 août 2005 à 23:05
Voila un petit exemple de requête SQL pour interroger et effacer une base de données ACCESS (Table nommée Q2400). Dans Command1_Click, je récupére toutes les infos de la database et je les affiche dans une listview (Mais base toit plutot sur Command2_Click ou je ne fais qu'effacer la database). Pour comprendre le fct c plus facile car quand tu récupéres c chaud à configurer la listview (probs d'indice) il faudrai ke t la même base de données

Public cnn As New ADODB.connection
Public rst As New ADODB.Recordset

'--------------------------------------------------------------------------------------

Private Sub Command1_Click()
connection 'Connection Base de Données

requetSQL = "SELECT * FROM Q2400;"
rst.Open requetSQL, cnn, adOpenForwardOnly, adLockReadOnly 'Recordset

'une fois requêtenvoyée il faut récupérer le résultat via le recordset
If (rst.RecordCount <> 0) Then 'Test si recordset n'est pas vide

If (rst.BOF = False) Then
rst.MoveFirst 'On se place sur le 1er enregistrement (= première ligne DataBase)


For i = 0 To 10

Set ObjListe = Form1.View1.ListItems.Add(, , i)
ObjListe.SubItems(1) = rst.Fields(i).Name

ValidateRect Form1.View1.hwnd, 0& 'API pour pas faire clignoter la Lisview

'-- Autorise le multi-tâche
DoEvents


Next i
InvalidateRect Form1.View1.hwnd, 0&, 0&

End If

End If
deconnection 'Deconnection Base de Données
End Sub

'--------------------------------------------------------------------------------------
'pour effacer la base
Private Sub Command2_Click()
connection
cnn.Execute "DELETE * FROM Q2400;"
deconnection
End Sub

'--------------------------------------------------------------------------------------
Public Sub connection()
'++++++++ Ouverture de la connection ++++++++
Set cnn = New ADODB.connection
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.Open "Data Source=" & App.path & "\BD_Valeurs.mdb"
'++++++++++++++++++++++++++++++++++++++++++++
End Sub


Public Sub deconnection()
'++++++++++ Fermeture de la connection ==++++++++
cnn.Close
End Sub

Il esxiste aussi en requête SQL:

Si tu veux insérer une nouvelle ligne dans la database (admettons que tu es 2 colonnes) avec lesvaleurs comprises dans text1.text et Text2.Text :
cnn.Execute "INSERT into Q2400 VALUES('" & Text1.Text & "','" & Text2.Text & "')'"
A chaque fois que tu exécutera cette commande tu remplira une nouvelle ligne (la dernière de la DB)

Si tu veux juste la mettre à jour (sans créer une nouvelle ligne) :
cnn.Execute "UPDATE Q2400 <Nom colonne1 Base de données ACCESS>='" & Text1.Text & "',<Nom colonne2 Base de données ACCESS>='" & Text2.Text & "'"

Bien faire attention à la syntaxe. Toutes les valeurs (Text1.Text ...) doivent être entourées du symbole ' ==> 'Text1.Text'

En espérant que ca puisse t'aider !!!!
Si ca marche pas ajoute la référence suivante :
Microsoft DAO 3.51 Object Library

hilippe
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
3 août 2005 à 01:15
Salut,



le code le plus parfait que j'ai vu sur VBFrance pour une connexion à une BD Mysql est :



http://vbfrance.com/code.aspx?id=8100



NB : la chaine de connexion est : DRIVER={MySQL ODBC 3.51 Driver}


phillipe > : ton code c'est du ADO et non pas du DAO donc il faut ajouter MS Activex Data Object Library 2.8 ou inférieur.
PS: Si votre problème est résolu, prière de bien vouloir clôturer votre message par une réponse acceptée !
0
philippe laschweng 1 Messages postés 278 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 13 avril 2013 2
3 août 2005 à 08:03
c'était pour aider ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 1
3 août 2005 à 10:04
Salut à vous deux. Merci pour vos réponses. Donc moi en fait je pense que je ne peux pas me connecter à free car peut être qu'ils n'ont pas installé les pilotes ODBC nécessaires. Je vous montre mon code :

Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Any, _
ByVal lpString2 As Any) As Long


Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, _
Source As Any, ByVal Length As Long)




Private Sub Form_Load()


Dim pMySQL As Long


pMySQL = mysql_init(0)
If mysql_real_connect(pMySQL, "sql.free.fr", "******", "******", "*******", 0, "", 0) = 0 Then
MsgBox "Connexion Pas Ok"
Call LitEnregistrements(pMySQL)
Else
MsgBox "Connexion Ok"
' ...
End If
End Sub


Private Sub LitEnregistrements(pMySQL As Long)


Dim pMyROW As Long, myROW As Long, pLengths As Long, pMyRES As Long
Dim i As Long, j As Long, nbFields As Long, lengths() As Long, texte As String


If (mysql_query(pMySQL, "select * from LivreOr") = 0) Then


pMyRES = mysql_store_result(pMySQL)


If (pMyRES <> 0) Then


nbFields = mysql_num_fields(pMyRES)
If nbFields > 0 Then


ReDim lengths(0 To nbFields - 1)
For i = 0 To mysql_num_rows(pMyRES) - 1


pMyROW = mysql_fetch_row(pMyRES)
CopyMemory myROW, ByVal pMyROW, 4


pLengths = mysql_fetch_lengths(pMyRES)
CopyMemory lengths(0), ByVal pLengths, 4 * nbFields


For j = 0 To nbFields - 1
texte = Space(lengths(j))
lstrcpy texte, myROW
myROW = myROW + lengths(j) + 1
MsgBox texte
Next
Next
End If
End If
mysql_free_result (pMyRES)
End If
Dim pMyErrorMsg As Long, myErrorMsg As String


pMyErrorMsg = mysql_error(pMySQL)
myErrorMsg = CopieChaine(pMyErrorMsg)
MsgBox (myErrorMsg)
End Sub


Private Function CopieChaine(ByVal adresse As Long) As String


Dim ret As String


If adresse > 0 Then
ret = Space(256)
lstrcpy ret, adresse
ret = Trim(ret)
If ret <> "" Then CopieChaine = left(ret, Len(ret) - 1)
End If


End Function

Voilà donc au début il me dit Connexion Pas Ok. Ensuite lors de l'appel de ma procédure LitEnregistrement il me dit MySql Server has gone away
Donc moi je pense que je ne peux accéder à une base mysql sur free car ceux cis ne disposent pas des pilotes nécessaires pour effectuer une connexion distante. Qu'en pensez vous ?

Merci
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
3 août 2005 à 12:30
Désolé, mais il est impossible de se connecter aux serveurs MySQL de free depuis l'extérieur.



"Seuls vos scripts php hebergés sur les pages persos ainsi que
http://sql.free.fr peuvent vous permettre de vous connecter sur votre
base de données. Aucune connexion ne peut etre établie depuis
l'exterieur sur les bases de données de Free."



Lire : Comment utiliser une base de données ?

PS: Si votre problème est résolu, prière de bien vouloir clôturer votre message par une réponse acceptée !
0
Rejoignez-nous