talking
Messages postés343Date d'inscriptiondimanche 30 novembre 2003StatutMembreDernière intervention19 août 2006
-
2 août 2005 à 16:52
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 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
philippe laschweng 1
Messages postés278Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention13 avril 20132 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
'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
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 !
talking
Messages postés343Date d'inscriptiondimanche 30 novembre 2003StatutMembreDernière intervention19 août 20061 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
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 ?
cs_frop01
Messages postés1352Date d'inscriptionlundi 27 octobre 2003StatutMembreDernière intervention19 novembre 20082 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."