Accueil > > > CONVERTISSEUR SQL->REQUETTE/ACCES ODBC DIRECT(ORACLE)
CONVERTISSEUR SQL->REQUETTE/ACCES ODBC DIRECT(ORACLE)
Information sur la source
Description
Source
- Dim Kar, karprec As String * 1
- Dim CmdSQL(25), filesql As String
- Dim i, k, m, q, X, y, zoe As Double
- Dim Vtable, retour As String
- Dim Vtableau(106, 2) As String
- Dim automat, ero As Boolean
-
-
- Private Sub bexe_Click()
- TextBox2.Text = ""
- ODBContact (TextBox1.Text) 'execute toute ou partie de requete SQL qui est dans le texbox1
- End Sub
-
- Private Sub bquitter_Click()
- End
- End Sub
-
- Private Sub bVAuto_Click()
- y = 0 'initialisation du compteur de requete
- zoe = 0 'initilaisation du compteur de commande copier dans le goofy
- automat = True 'interupteur à on
- Open "C:\chorus\test\Goofy.sql" For Output Access Write As #2 'ouverture du fichier en ecriture
-
- Goo 'appel procédure de convertion (insert, update -> select)
-
- automat = False 'passage de l'interupteur à off
- 'MsgBox "traitement terminé", vbInformation, "Vérification automatique"
-
- TextBox1.Text = " // /////" & vbCrLf & " \\ - - //" & vbCrLf & " ( @ @ )" & vbCrLf & "----oOOo--(_)-oOOo----------" & vbCrLf & "La vérification est terminé" & vbCrLf & "Résultat :" & vbCrLf & y & " commandes SQL examinées" & vbCrLf & zoe & " commandes ont échoués" & vbCrLf & vbCrLf & "les lignes SQL sont dans" & vbCrLf & "c:\Chorus\Goofy.sql " & vbCrLf & "---------------Ooooo--------" & vbCrLf & " ( )" & vbCrLf & " ooooO ) /" & vbCrLf & " ( ) (_/" & vbCrLf & " \ (" & vbCrLf & " \_)" & vbCrLf
- TextBox1.Font = "fixedsys"
- TextBox1.Font.Size = 9
-
- Close #2
- End Sub
-
- Private Sub bVMan_Click()
- Goo 'lancement de la procédure d'analyse(etant compris l'affichage si l'intérupteur est off
- TextBox1.Font = "small fonts"
- TextBox1.Font.Size = 7
- End Sub
-
- Private Sub Form_Load()
- automat = False 'au démarrage l'intérupteur est off
- ero = False
- End Sub
-
-
- Private Sub List1_Click()
-
- TextBox1.Text = ""
- TextBox2.Text = ""
- List2.ListIndex = List1.ListIndex 'sélection dynamique de la ligne de la commande correspondand au select
- Text1 = List1.ListIndex + 1
- TextBox1.Text = List1.Text
- ODBContact (List1.Text) 'procédure d'envoi au serveur et retour des informations
- 'Clipboard.SetText List1.Text copie dans le presse papier
- End Sub
-
- Private Sub Command1_Click()
- frmAbout.Show vbModal 'just for fun
- Unload frmAbout
- Set frmAbout = Nothing
-
- End Sub
- Public Sub Goo() 'Procédure d'analyse liée à l'interupteur pour les fonctions d'affichages
- Dim test, ligne, filesql As String
- Dim j, k As Integer
- 'Connection Information
- 'On Error GoTo erro 'gestion d'une erreur éventuelle : ici l'adress fichier invalide
- filesql = Text.Text
-
- ' TextBox.Text = ""
- List1.Clear
- List2.Clear
-
- ero = True
- Open filesql For Input Access Read As #1 'ouverture du fichier en lecture seulement
-
- i = 1
- karsuivant 'appel procédure qui pointe sur le caractère suivant et qui enregistre
- 'la commandeSQL du insert/update jusqu'au point virgule
- ero = False
- While Not EOF(1) And Kar <> ";"
- If i <> 25 Then
- test = toaster(6) 'appel fonction toaster (un nombre de caractère)
- 'elle permet d'analysé en une fois les (N)éléments suivants
- 'exemple si les 6 premier caractère sont un "insert_" elle remvoit insert
- 'MsgBox test
- '--------------------------------------------------------------------------
- If test = "INSERT" Then 'test du resultat de la fonction toaster :
- proinsert 'procédure insert voir plus loin
- 'MsgBox CmdSQL(i), , "Votre aimable serviteur dit que :"
-
- 'concaténation de la requete, un tableau à deux dimensionS contient dans une colonne
- 'le nom des champs et de l'autre les valeurs correspondante
- ligne = "SELECT * " & vbCrLf & "FROM" & Vtable & vbCrLf & "WHERE " & Vtableau(0, 1) & " = " & Vtableau(0, 2) & vbCrLf
-
- For z = 1 To q - 1
- If Vtableau(z, 2) <> "''" Then
- ligne = ligne & " AND " & Vtableau(z, 1) & " = " & Vtableau(z, 2) & vbCrLf
- End If
- Next
- ligne = ligne & ";"
- 'fin concaténation
- 'début de l'affichage si l'intérupteur est off
- If automat = False Then
- List2.AddItem CmdSQL(i)
- List1.AddItem ligne
- Gridy.Cols = 0
- Else
- ODBContact (ligne)
- End If
- ligne = ""
- Vtable = ""
- i = i + 1
- End If
- '-------------------------------------------------------------------------
- If test = "UPDATE" Then
- proupdate 'procédure update
-
- End If
- '-------------------------------------------------------------------------
- If test = "DELETE" Then
- While Kar <> ";"
- karsuivant
- Wend
- If automat = False Then
- MsgBox "ATTENTION IL Y A UNE COMMANDE DELETE", vbCritical, "ALERTE IMPORTANT"
- Else
- Print #2, CmdSQL(i)
- End If
- i = i + 1
- End If
- '-------------------------------------------------------------------------
-
-
- toaster (3)
-
- Else 'limitation de l'éxecution pour gagner en rapidité et stabilité et mémoire
- 'MsgBox "la limite des 25 est dépassé"
- For i = 1 To 25
- CmdSQL(i) = ""
- Next
- i = 1
-
- End If
- Wend
- NbCmd.Text = List1.ListCount 'compteur du nombre d'élément dans le listeboc equivalent au nombre de requete
-
-
- erro:
- If ero = True Then
- MsgBox "le nom de fichier ou le chemin d'acces au fichier sont incorrect " & vbCrLf & "Sinon vérifier que le fichier n'est deja pas ouvert par une autre application" & vbCrLf & "merci de le corriger", vbCritical, "Erreur fichier"
- erro = False
- End If
- Close #1 'fermeture du fichier
- NbCmd.Text = List1.ListCount 'compteur du nombre d'élément dans le listeboc equivalent au nombre de requete
-
-
- End Sub
-
- Private Sub List2_Click()
- 'dynamique d'affichage entre les listebox pointe vers le select correspondant
- List1.ListIndex = List2.ListIndex
-
- End Sub
-
- Private Sub List2_DblClick()
- List1.ListIndex = List2.ListIndex
- TextBox1.Text = ""
- Clipboard.SetText List2.Text 'copie la commande SQL dans le presse papier
- TextBox1.Text = List2.Text 'affiche la commande sql dans le textbox
-
- End Sub
-
- Public Function toaster(param) 'revoie les n element suivant concaténé pour former un mot
- Dim testost(10) As String
- Dim o As Integer
-
- For o = 0 To (param - 1)
- testost(o) = Kar
- karsuivant
- Next
-
- For o = 0 To (param - 1)
- tampon = tampon & testost(o)
- Next
- toaster = tampon
-
- End Function
-
- Public Sub proinsert()
-
- While Kar <> ";"
- tampon = toaster(5)
-
- If tampon = " INTO" Then
- table 'procédure table
- Value ' procédure value
- End If
-
- Wend
- End Sub
-
- Public Sub table() 'procédure qui extrait le nom de la table dans un insert ainsi que
- 'le nom des champs
- Dim trampo As Variant
-
- While Kar <> "("
- trampo = trampo & Kar
- karsuivant
- Wend
- Vtable = trampo
- 'msgbox Vtable
- trampo = ""
- If Kar = "(" Then
- 'MsgBox Kar, vbDefaultButton4, "Variable Kar dans table test d'entrée "
- karsuivant
- q = 0
- Gridy.Row = 0
- While Kar <> ")"
- If Kar <> "," Then
- trampo = trampo & Kar
-
- Else
- Vtableau(q, 1) = trampo
- 'affichage au conditionnel puisque test de l'interupteur
- If automat = False Then
- Gridy.Cols = q + 2 'ajoute au fur et à mesure des colonnes pour les champs
- Gridy.Col = q
- Gridy.Text = Vtableau(q, 1)
- End If
- trampo = ""
-
- q = q + 1
- End If
- karsuivant
- Wend
- Vtableau(q, 1) = trampo
- If automat = False Then
- Gridy.Cols = q + 1 'ajoute au fur et à mesure des colonnes pour les champs
- Gridy.Col = q
- Gridy.Text = Vtableau(q, 1)
- End If
- trampo = ""
-
- q = q + 1
- End If
-
- End Sub
-
- Public Sub karsuivant() 'correspond à l'avancement du pointeur de 1
- If Not EOF(1) Then
- karprec = Kar 'kar correspond au caractère courrant et karprec au caratere précédent
- Kar = Input(1, #1)
- 'Text1.Text = Text1.Text & Kar 'affichage du fichier dans le textbox
- 'concaténation des caratère pour former la commande SQL initiale
- CmdSQL(i) = CmdSQL(i) & Kar
- End If
-
-
- End Sub
-
- Public Sub Value() 'produre permettant d'extraire les valeurs contenue dans le insert
- Dim garry As String
- Dim w As Integer
- Dim kara, karo As String * 1
-
- 'MsgBox "procédure Value"
- karsuivant
- karsuivant
- garry = toaster(8)
-
- w = 0
- If garry = "VALUES (" Then
- While Kar <> ";"
- Gridy.Row = 1
- If Kar <> "," Then
- 'prise en compte du format spécial des dates
- If kara = "," And karo = "T" And Kar = "O" Then ' definition du format de date
-
- While Kar <> ")"
- tampon = tampon & Kar
- karsuivant
- Wend
- tampon = tampon & ")"
- Else
- If Kar <> ")" Then
- tampon = tampon & Kar
- End If
- End If
- Else
-
- Vtableau(w, 2) = tampon
- tampon = ""
- 'affichage au conditionnel puisque test de l'interupteur
- If automat = False Then
- If w <= 31 Then
- Gridy.Col = w
- Gridy.Text = Vtableau(w, 2)
- End If
- End If
- w = w + 1
- End If
- kara = karo
- karo = Kar
- karsuivant
- Wend
- Vtableau(w, 2) = tampon
- tampon = ""
- 'affichage au conditionnel puisque test de l'interupteur
- If automat = False Then
- If w <= 31 Then ' sinon on atteint les limite du msflexgrid
- Gridy.Col = w
- Gridy.Text = Vtableau(w, 2)
- End If
- End If
- Else
- MsgBox "erreur dans la procédure value ne touve pas les caractères VALUES ("
-
-
- End If
- 'MsgBox "fin procédure Value"
- End Sub
-
- Public Sub proupdate()
- 'procédure permettant de convertir les update en select
- While Kar <> ";"
- While Kar <> "S"
- Vtable = Vtable & Kar
- karsuivant
- 'MsgBox Vtable
- Wend
- 'MsgBox Vtable
- tampon = toaster(3)
-
- If tampon = "SET" Then
- While Kar <> "W" And karprec <> ""
- If Kar <> "," Then
- If karprec = "=" And Kar = "T" Then
- While Kar <> ")"
- ligne2 = ligne2 & Kar
- karsuivant
- Wend
- ligne2 = ligne2 & ")"
- Else
- ligne2 = ligne2 & Kar
- End If
- Else
- ligne2 = ligne2 & vbCrLf & " AND "
- End If
- karsuivant
- Wend
-
- While Kar <> ";"
- ligne = ligne & Kar
- karsuivant
- Wend
- ligne = ligne & vbCrLf & "AND" & ligne2 & ";"
-
- ligne = "SELECT * " & vbCrLf & "FROM " & Vtable & vbCrLf & ligne
- End If
-
- Wend
- 'affichage au conditionnel puisque test de l'interupteur
- If automat = False Then
- List2.AddItem CmdSQL(i)
- List1.AddItem ligne
- Gridy.Cols = 0
- Else
- ODBContact (ligne)
- End If
-
- ligne = ""
- Vtable = ""
- i = i + 1
- End Sub
-
-
-
- Public Sub ODBContact(commande As String)
- 'procédure de connexion à la base de donnée odbc distante avec renvoi des données
- Dim SI As Database
- Dim qUEry As QueryDef
- Dim enRegistre As Recordset
- Dim fld As Field
- Dim connect As String
-
- connect = "UID=" & Nom.Text & ";PWD=" & secret.Text & ";DSN=" & server.Text & ";" ' concaténation de la chaine de connexion avec les information saisie
- ero = True
- On Error GoTo lafin
- Set SI = OpenDatabase("", dbDriverNoPrompt, True, connect) ' configuration de l'objet Database
-
- 'MsgBox connexion.Name, , "Nom de la Base de donnée (DSN)"
-
- Set qUEry = SI.CreateQueryDef("") 'cree une requete temporaire
- qUEry.connect = "ODBC;" & connect 'important : configure la connexion de la requete
-
- qUEry.SQL = commande 'affectation de la requete SQl à executer
- 'MsgBox commande
- qUEry.ReturnsRecords = True
- 'MsgBox qUEry.Name
- 'MsgBox qUEry.SQL
-
- ' configuration de l'obet qui va stocker les enregistrement retourné la requete qui le défini
- Set enRegistre = qUEry.OpenRecordset(dbOpenForwardOnly, ReadOnly)
-
-
- ' bouleen disant si des données ont été envoyé ou pas (sens server -> client)
- If enRegistre.RecordCount = 0 Then
- If automat = False Then
- TextBox2.TextRTF = "il n' YA PAS d'enregistrement CORRESPONDANT à cette requète "
- End If
- If automat = True Then
- 'MsgBox CmdSQL(i)
- zoe = zoe + 1
- Print #2, CmdSQL(i)
- End If
-
- Else
- 'procédure d'affichage ou non suivant la position de l'interupateur
- If automat = False Then
- Text8.Text = enRegistre.RecordCount
- j = 0
- While Not enRegistre.EOF
- TextBox2.Text = TextBox2.Text & "------ " & j + 1 & " -----------------------------------------------------" & vbCrLf
- For Each fld In enRegistre.Fields
- TextBox2.Text = TextBox2.Text & fld.Name & " = " & fld.Value & vbCrLf
- Next fld
-
- enRegistre.MoveNext 'déplacement du curseur sur l'enregistrement suivant (fetch)
- j = j + 1
- Wend
-
- Text8.Text = j
-
-
- End If
- End If
- i = i + 1
- y = y + 1
- enRegistre.Close 'fermeture de recorset
-
- qUEry.Close 'fermeture du query
- SI.Close 'fermeture de la connexion à la base
- 'MsgBox i
- ero = False
-
- lafin:
- If ero = True Then
- If automat = False Then
- MsgBox "Verif .SQL n'a pu établir la connexion avec le serveur distant." & vbCrLf & "Veuiller vérifier l'intégrité des sources ODBC " & vbCrLf & "Panneau de configuration / Source de donnée ODBC "
- ero = False
- Else
- MsgBox enRegistre.RecordCount
- End If
- End If
-
- End Sub
- Private Sub Text_dblClick()
- With CommonDialog1
- .Filter = ("fichier SQL (*.sql)|*.sql")
- .ShowOpen
- End With
- Text = CommonDialog1.filename
- End Sub
-
Dim Kar, karprec As String * 1
Dim CmdSQL(25), filesql As String
Dim i, k, m, q, X, y, zoe As Double
Dim Vtable, retour As String
Dim Vtableau(106, 2) As String
Dim automat, ero As Boolean
Private Sub bexe_Click()
TextBox2.Text = ""
ODBContact (TextBox1.Text) 'execute toute ou partie de requete SQL qui est dans le texbox1
End Sub
Private Sub bquitter_Click()
End
End Sub
Private Sub bVAuto_Click()
y = 0 'initialisation du compteur de requete
zoe = 0 'initilaisation du compteur de commande copier dans le goofy
automat = True 'interupteur à on
Open "C:\chorus\test\Goofy.sql" For Output Access Write As #2 'ouverture du fichier en ecriture
Goo 'appel procédure de convertion (insert, update -> select)
automat = False 'passage de l'interupteur à off
'MsgBox "traitement terminé", vbInformation, "Vérification automatique"
TextBox1.Text = " // /////" & vbCrLf & " \\ - - //" & vbCrLf & " ( @ @ )" & vbCrLf & "----oOOo--(_)-oOOo----------" & vbCrLf & "La vérification est terminé" & vbCrLf & "Résultat :" & vbCrLf & y & " commandes SQL examinées" & vbCrLf & zoe & " commandes ont échoués" & vbCrLf & vbCrLf & "les lignes SQL sont dans" & vbCrLf & "c:\Chorus\Goofy.sql " & vbCrLf & "---------------Ooooo--------" & vbCrLf & " ( )" & vbCrLf & " ooooO ) /" & vbCrLf & " ( ) (_/" & vbCrLf & " \ (" & vbCrLf & " \_)" & vbCrLf
TextBox1.Font = "fixedsys"
TextBox1.Font.Size = 9
Close #2
End Sub
Private Sub bVMan_Click()
Goo 'lancement de la procédure d'analyse(etant compris l'affichage si l'intérupteur est off
TextBox1.Font = "small fonts"
TextBox1.Font.Size = 7
End Sub
Private Sub Form_Load()
automat = False 'au démarrage l'intérupteur est off
ero = False
End Sub
Private Sub List1_Click()
TextBox1.Text = ""
TextBox2.Text = ""
List2.ListIndex = List1.ListIndex 'sélection dynamique de la ligne de la commande correspondand au select
Text1 = List1.ListIndex + 1
TextBox1.Text = List1.Text
ODBContact (List1.Text) 'procédure d'envoi au serveur et retour des informations
'Clipboard.SetText List1.Text copie dans le presse papier
End Sub
Private Sub Command1_Click()
frmAbout.Show vbModal 'just for fun
Unload frmAbout
Set frmAbout = Nothing
End Sub
Public Sub Goo() 'Procédure d'analyse liée à l'interupteur pour les fonctions d'affichages
Dim test, ligne, filesql As String
Dim j, k As Integer
'Connection Information
'On Error GoTo erro 'gestion d'une erreur éventuelle : ici l'adress fichier invalide
filesql = Text.Text
' TextBox.Text = ""
List1.Clear
List2.Clear
ero = True
Open filesql For Input Access Read As #1 'ouverture du fichier en lecture seulement
i = 1
karsuivant 'appel procédure qui pointe sur le caractère suivant et qui enregistre
'la commandeSQL du insert/update jusqu'au point virgule
ero = False
While Not EOF(1) And Kar <> ";"
If i <> 25 Then
test = toaster(6) 'appel fonction toaster (un nombre de caractère)
'elle permet d'analysé en une fois les (N)éléments suivants
'exemple si les 6 premier caractère sont un "insert_" elle remvoit insert
'MsgBox test
'--------------------------------------------------------------------------
If test = "INSERT" Then 'test du resultat de la fonction toaster :
proinsert 'procédure insert voir plus loin
'MsgBox CmdSQL(i), , "Votre aimable serviteur dit que :"
'concaténation de la requete, un tableau à deux dimensionS contient dans une colonne
'le nom des champs et de l'autre les valeurs correspondante
ligne = "SELECT * " & vbCrLf & "FROM" & Vtable & vbCrLf & "WHERE " & Vtableau(0, 1) & " = " & Vtableau(0, 2) & vbCrLf
For z = 1 To q - 1
If Vtableau(z, 2) <> "''" Then
ligne = ligne & " AND " & Vtableau(z, 1) & " = " & Vtableau(z, 2) & vbCrLf
End If
Next
ligne = ligne & ";"
'fin concaténation
'début de l'affichage si l'intérupteur est off
If automat = False Then
List2.AddItem CmdSQL(i)
List1.AddItem ligne
Gridy.Cols = 0
Else
ODBContact (ligne)
End If
ligne = ""
Vtable = ""
i = i + 1
End If
'-------------------------------------------------------------------------
If test = "UPDATE" Then
proupdate 'procédure update
End If
'-------------------------------------------------------------------------
If test = "DELETE" Then
While Kar <> ";"
karsuivant
Wend
If automat = False Then
MsgBox "ATTENTION IL Y A UNE COMMANDE DELETE", vbCritical, "ALERTE IMPORTANT"
Else
Print #2, CmdSQL(i)
End If
i = i + 1
End If
'-------------------------------------------------------------------------
toaster (3)
Else 'limitation de l'éxecution pour gagner en rapidité et stabilité et mémoire
'MsgBox "la limite des 25 est dépassé"
For i = 1 To 25
CmdSQL(i) = ""
Next
i = 1
End If
Wend
NbCmd.Text = List1.ListCount 'compteur du nombre d'élément dans le listeboc equivalent au nombre de requete
erro:
If ero = True Then
MsgBox "le nom de fichier ou le chemin d'acces au fichier sont incorrect " & vbCrLf & "Sinon vérifier que le fichier n'est deja pas ouvert par une autre application" & vbCrLf & "merci de le corriger", vbCritical, "Erreur fichier"
erro = False
End If
Close #1 'fermeture du fichier
NbCmd.Text = List1.ListCount 'compteur du nombre d'élément dans le listeboc equivalent au nombre de requete
End Sub
Private Sub List2_Click()
'dynamique d'affichage entre les listebox pointe vers le select correspondant
List1.ListIndex = List2.ListIndex
End Sub
Private Sub List2_DblClick()
List1.ListIndex = List2.ListIndex
TextBox1.Text = ""
Clipboard.SetText List2.Text 'copie la commande SQL dans le presse papier
TextBox1.Text = List2.Text 'affiche la commande sql dans le textbox
End Sub
Public Function toaster(param) 'revoie les n element suivant concaténé pour former un mot
Dim testost(10) As String
Dim o As Integer
For o = 0 To (param - 1)
testost(o) = Kar
karsuivant
Next
For o = 0 To (param - 1)
tampon = tampon & testost(o)
Next
toaster = tampon
End Function
Public Sub proinsert()
While Kar <> ";"
tampon = toaster(5)
If tampon = " INTO" Then
table 'procédure table
Value ' procédure value
End If
Wend
End Sub
Public Sub table() 'procédure qui extrait le nom de la table dans un insert ainsi que
'le nom des champs
Dim trampo As Variant
While Kar <> "("
trampo = trampo & Kar
karsuivant
Wend
Vtable = trampo
'msgbox Vtable
trampo = ""
If Kar = "(" Then
'MsgBox Kar, vbDefaultButton4, "Variable Kar dans table test d'entrée "
karsuivant
q = 0
Gridy.Row = 0
While Kar <> ")"
If Kar <> "," Then
trampo = trampo & Kar
Else
Vtableau(q, 1) = trampo
'affichage au conditionnel puisque test de l'interupteur
If automat = False Then
Gridy.Cols = q + 2 'ajoute au fur et à mesure des colonnes pour les champs
Gridy.Col = q
Gridy.Text = Vtableau(q, 1)
End If
trampo = ""
q = q + 1
End If
karsuivant
Wend
Vtableau(q, 1) = trampo
If automat = False Then
Gridy.Cols = q + 1 'ajoute au fur et à mesure des colonnes pour les champs
Gridy.Col = q
Gridy.Text = Vtableau(q, 1)
End If
trampo = ""
q = q + 1
End If
End Sub
Public Sub karsuivant() 'correspond à l'avancement du pointeur de 1
If Not EOF(1) Then
karprec = Kar 'kar correspond au caractère courrant et karprec au caratere précédent
Kar = Input(1, #1)
'Text1.Text = Text1.Text & Kar 'affichage du fichier dans le textbox
'concaténation des caratère pour former la commande SQL initiale
CmdSQL(i) = CmdSQL(i) & Kar
End If
End Sub
Public Sub Value() 'produre permettant d'extraire les valeurs contenue dans le insert
Dim garry As String
Dim w As Integer
Dim kara, karo As String * 1
'MsgBox "procédure Value"
karsuivant
karsuivant
garry = toaster(8)
w = 0
If garry = "VALUES (" Then
While Kar <> ";"
Gridy.Row = 1
If Kar <> "," Then
'prise en compte du format spécial des dates
If kara = "," And karo = "T" And Kar = "O" Then ' definition du format de date
While Kar <> ")"
tampon = tampon & Kar
karsuivant
Wend
tampon = tampon & ")"
Else
If Kar <> ")" Then
tampon = tampon & Kar
End If
End If
Else
Vtableau(w, 2) = tampon
tampon = ""
'affichage au conditionnel puisque test de l'interupteur
If automat = False Then
If w <= 31 Then
Gridy.Col = w
Gridy.Text = Vtableau(w, 2)
End If
End If
w = w + 1
End If
kara = karo
karo = Kar
karsuivant
Wend
Vtableau(w, 2) = tampon
tampon = ""
'affichage au conditionnel puisque test de l'interupteur
If automat = False Then
If w <= 31 Then ' sinon on atteint les limite du msflexgrid
Gridy.Col = w
Gridy.Text = Vtableau(w, 2)
End If
End If
Else
MsgBox "erreur dans la procédure value ne touve pas les caractères VALUES ("
End If
'MsgBox "fin procédure Value"
End Sub
Public Sub proupdate()
'procédure permettant de convertir les update en select
While Kar <> ";"
While Kar <> "S"
Vtable = Vtable & Kar
karsuivant
'MsgBox Vtable
Wend
'MsgBox Vtable
tampon = toaster(3)
If tampon = "SET" Then
While Kar <> "W" And karprec <> ""
If Kar <> "," Then
If karprec = "=" And Kar = "T" Then
While Kar <> ")"
ligne2 = ligne2 & Kar
karsuivant
Wend
ligne2 = ligne2 & ")"
Else
ligne2 = ligne2 & Kar
End If
Else
ligne2 = ligne2 & vbCrLf & " AND "
End If
karsuivant
Wend
While Kar <> ";"
ligne = ligne & Kar
karsuivant
Wend
ligne = ligne & vbCrLf & "AND" & ligne2 & ";"
ligne = "SELECT * " & vbCrLf & "FROM " & Vtable & vbCrLf & ligne
End If
Wend
'affichage au conditionnel puisque test de l'interupteur
If automat = False Then
List2.AddItem CmdSQL(i)
List1.AddItem ligne
Gridy.Cols = 0
Else
ODBContact (ligne)
End If
ligne = ""
Vtable = ""
i = i + 1
End Sub
Public Sub ODBContact(commande As String)
'procédure de connexion à la base de donnée odbc distante avec renvoi des données
Dim SI As Database
Dim qUEry As QueryDef
Dim enRegistre As Recordset
Dim fld As Field
Dim connect As String
connect = "UID=" & Nom.Text & ";PWD=" & secret.Text & ";DSN=" & server.Text & ";" ' concaténation de la chaine de connexion avec les information saisie
ero = True
On Error GoTo lafin
Set SI = OpenDatabase("", dbDriverNoPrompt, True, connect) ' configuration de l'objet Database
'MsgBox connexion.Name, , "Nom de la Base de donnée (DSN)"
Set qUEry = SI.CreateQueryDef("") 'cree une requete temporaire
qUEry.connect = "ODBC;" & connect 'important : configure la connexion de la requete
qUEry.SQL = commande 'affectation de la requete SQl à executer
'MsgBox commande
qUEry.ReturnsRecords = True
'MsgBox qUEry.Name
'MsgBox qUEry.SQL
' configuration de l'obet qui va stocker les enregistrement retourné la requete qui le défini
Set enRegistre = qUEry.OpenRecordset(dbOpenForwardOnly, ReadOnly)
' bouleen disant si des données ont été envoyé ou pas (sens server -> client)
If enRegistre.RecordCount = 0 Then
If automat = False Then
TextBox2.TextRTF = "il n' YA PAS d'enregistrement CORRESPONDANT à cette requète "
End If
If automat = True Then
'MsgBox CmdSQL(i)
zoe = zoe + 1
Print #2, CmdSQL(i)
End If
Else
'procédure d'affichage ou non suivant la position de l'interupateur
If automat = False Then
Text8.Text = enRegistre.RecordCount
j = 0
While Not enRegistre.EOF
TextBox2.Text = TextBox2.Text & "------ " & j + 1 & " -----------------------------------------------------" & vbCrLf
For Each fld In enRegistre.Fields
TextBox2.Text = TextBox2.Text & fld.Name & " = " & fld.Value & vbCrLf
Next fld
enRegistre.MoveNext 'déplacement du curseur sur l'enregistrement suivant (fetch)
j = j + 1
Wend
Text8.Text = j
End If
End If
i = i + 1
y = y + 1
enRegistre.Close 'fermeture de recorset
qUEry.Close 'fermeture du query
SI.Close 'fermeture de la connexion à la base
'MsgBox i
ero = False
lafin:
If ero = True Then
If automat = False Then
MsgBox "Verif .SQL n'a pu établir la connexion avec le serveur distant." & vbCrLf & "Veuiller vérifier l'intégrité des sources ODBC " & vbCrLf & "Panneau de configuration / Source de donnée ODBC "
ero = False
Else
MsgBox enRegistre.RecordCount
End If
End If
End Sub
Private Sub Text_dblClick()
With CommonDialog1
.Filter = ("fichier SQL (*.sql)|*.sql")
.ShowOpen
End With
Text = CommonDialog1.filename
End Sub
Conclusion
ouvre un fichier .sql contenant des insert/update ou delete, converti tout ce beau monde en select les transmet au serveur ODBC(ici une base oracle) si elles ne sont pas présente sur le serveur il génere un fichier goofy.sql contenant les insert /update qui ne sont pas présent sur la base
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Exécuter une requette SQL avec VBA (Access) [ par h_adil ]
Bonjour,je veux exécuter une requette sql à partir de vba access (modul)l'objectif de ce programme est de récuperer la valeur d'un critère et de l'app
ODBC Access lié à sql [ par myart ]
slt!klk1 pe til maiD SVP!s8 perdu...en fait je s8 sur un projet vb6 jvoudré demandé how crée t_on un DSN ODBC Access dont les tables sont lié à Sql...
requete sql et base access [ par sauce31 ]
Bonjour,J'ai deux problèmes depuis quelques jours sur un projet.1) à l'aide d'une requête, je veux selectionner les idNumEmp de ma table Employés qui
Tables systèmes Access 2003 + SQL Server 2005 [ par nanou100 ]
Bonjour, J'ai une base de données Access (bd2.mdb) liées avec SQL Server contenant des tables systèmes. Aussi, j'ai une autre base de données (bd1.md
[VBA] connexion Access à une base SQL server [ par tsunam ]
Bonjour à tous, J'ai réussi à lier des tables de SQL server express 2008 vers Access 2003. (fichier, données externes, lier les tables... Pilote fonc
VB / Access / SQL [ par chefinf ]
Bonjour,Comment faire pour integrer une requête sql qui manipule des données dans une BD sous access, contenant une boucle, dans un code VB6?.
VB / Access / SQL [ par chefinf ]
Bonjour,Comment supprimer une base des données access à partir d'une requête sql sous vb6?.
requette sql [ par colby ]
Bonjour Débutant. J'ai une form, 2 textbox, un datagridview et une table "tbc" qui contient 6 colonnes composées de "date, operation, nom, prenom, cr
Access / Odbc / #-666 et #8015 (Pas de code) [ par 100RENK1 ]
Bonjour,Je suis à 2 jours des vacances et dans une situation délicate : Merci de vos conseils...Je souhaite faire un simple query d'ACCESS vers mon AS
VB.Net Problème Requête SQL Access [ par MagDix ]
Bonjour à tous J'aimerais me faire une requête afin de faire afficher dans mon datagridview tous les résultats se situant entre 1 et 100 (à partir d'
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Forum
TAILLETAILLE par nounuo74
Cliquez pour lire la suite par nounuo74
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|