sdisp
Messages postés75Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention17 octobre 2008
-
24 août 2006 à 16:48
sdisp
Messages postés75Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention17 octobre 2008
-
25 août 2006 à 12:00
Bonjour.
Pour commencer je dirais juste que cela ne fais que 2 heures que je me suis mis au vb alors je m'excuse pour mon incompétence
J'ai récupéré ce code pour exécuter des requêtes sur une bdd oracle..
Option Explicit
Dim connectionString: connectionString = "DRIVER={Microsoft ODBC for Oracle};SERVER=;User Id=;Password=;"
Dim connection: Set connection = CreateObject("ADODB.Connection")
Dim rows: Set rows = CreateObject("ADODB.Recordset")
connection.Open connectionString
Set rows = connection.Execute("SELECT name,age FROM people")
Dim strResult
While Not rows.EOF
strResult=rows.Fields("name").Value + vbTab + rows.Fields("age ").Value + VbCrLf
rows.MoveNext
Wend
'Pour creer le fichier texte
Dim FSys
Dim MonFic
Dim Msg
Set FSys = CreateObject("Scripting.FileSystemObject")
Set MonFic = FSys.CreateTextFile(".\fichier.txt")
With MonFic 'Pour écrire dans le fichier texte
.writeLine strResult
End With
MonFic.close
Msg = "Écriture réussie dans fichier.txt"
MsgBox(Msg)
MsgBox(strResult)
connection.Close
Set rows = Nothing
Set connection = Nothing
Je voudrais savoir comment faire pour récupérer les noms des colonnes.
Pour ne pas avoir à coder en dur le nom de la colonne.
Ainsi que pour le mettre en entête dans le fichier que je crée avec le résultat de ma requête.
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 24 août 2006 à 17:33
Salut,
Ceci devrait fonctionner
Dim NomColonne
Connection.Open ConnectionString
Set rows = Connection.Execute("SELECT name,age FROM people")
For Each NomColonne In rows.Fields
MsgBox NomColonne.Name
Next
sdisp
Messages postés75Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention17 octobre 20081 25 août 2006 à 12:00
Pour ceux qui sont interessés, voici mon script final ( => execute une requete, insere le resultat dans un fichier txt, avec le nom des colonnes en 1er ligne et les données qui suivent, le separateur etant le tab ):
Option Explicit
'Variable de parametre de connection
Dim connectionString: connectionString = "DRIVER={Microsoft ODBC for Oracle};SERVER=***;User Id=***;Password=***;"
'Variable de connection a la base de donnes
Dim connection: Set connection = CreateObject("ADODB.Connection")
'Objet contenant le resultat d'une requete
Dim rows: Set rows = CreateObject("ADODB.Recordset")
'Varible de la requete a executer
Dim strQuery : strQuery = "SELECT * FROM NomTable"
'Variable pour concatener les ligne
Dim strResult
'Variable du nom des colonnes
Dim NomColonne
Dim FSys : Set FSys = CreateObject("Scripting.FileSystemObject")
'Variable pour ecrire dans un fiochier
Dim MonFic : Set MonFic = FSys.CreateTextFile("fichier.txt")
Dim Msg : Msg = "Écriture réussie dans fichier.txt"
Call connection.Open(connectionString)
Set rows = connection.Execute(strQuery)
For Each NomColonne In rows.Fields
StrResult = StrResult & NomColonne.Name & vbTab
Next
MonFic.WriteLine(StrResult)
While Not rows.EOF
'Vide strresult
StrResult = vbNullString
For Each NomColonne In rows.Fields
strResult = strResult & CStr(NomColonne.Value) & vbTab
Next
MonFic.WriteLine(StrResult)
rows.MoveNext
Wend
'fermeture du fichier
Call MonFic.close
'fermeture du Recordset
Call rows.Close
'fermeture de la connection
Call connection.Close
MsgBox(Msg)
'destruction des objets
Set rows = Nothing
Set connection = Nothing
Set MonFic = Nothing
Set NomColonne = Nothing
Set FSys = Nothing
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 24 août 2006 à 17:59
Re,
J'ajouterai meme ceci si tu veux ecrire le résultat d'une requete dans un fichier (avec en premiere ligne le nom des colonnes)
En revanche si je peux te conseiller quelque chose:
Essaie de type au maximum tes variable
Exemple: Prefere Dim connectionString As String a Dim connectionString (car ici ConnectionString est alors de type variant)
-Je n'ai pas pu le tester car je n'ai pas de conneciton a une base données Oracle.
pour ajouter une référence (si tu ne sais pas déja le faire) Menu Projet => Références => APRES IL Y A PLUS QU A COCHER;
Autre note, est tu sur que c'est du .NET car le code que je t'ai donné est du VB6
Voila tout est dit j'espere que tu comprendras et que cela fonctionnera
'Pour pouvoir utiliser les objets Recordset et Field et connection
'Coche la référence suivante Microsoft ActiveX Data Object 2.8 Library (2.8 ou equivalent)
'Pour pouvoir utiliser les objet FileSystemObject et TextStream
'Coche la référence suivante Microsoft Scripting Runtime
'Variable de connection a la base de donnes
Dim connection As New ADODB.connection
'Objet contenant le resultat d'une requete
Dim rows As New ADODB.Recordset
'represente Un champ d'un recordset
Dim NomColonne As ADODB.Field
Dim FSys As New FileSystemObject
'Variable pour ecrire dans un fiochier
Dim MonFic As TextStream
'Variable de parametre de connection
Dim connectionString As String
'Variable pour concatener les ligne
Dim StrResult As String
connectionString = "DRIVER={Microsoft ODBC for Oracle};SERVER=;User Id=;Password=;"
Call connection.Open(connectionString)
Set rows = connection.Execute("SELECT name,age FROM people")
Set MonFic = FSys.CreateTextFile("C:\fichier.txt")
For Each NomColonne In rows.Fields
'Construit l'entete des colonnes (nom)
StrResult = StrResult & NomColonne.Name & vbTab
Next
'Ecrit l'entete dans le fichier
Call MonFic.WriteLine(StrResult)
'Boucle pour chaque ligne de l'objet recordset
While Not rows.EOF
'Vide strresult
StrResult = vbNullString
'Recupere les valeur de la ligne
For Each NomColonne In rows.Fields
StrResult = StrResult & NomColonne.Value & vbTab
Next
'Ecriture dans le fichier
Call MonFic.WriteLine(StrResult)
'Passe a la "ligne" suivante
rows.MoveNext
Wend
'fermeture du fichier
Call MonFic.Close
'fermeture du Recordset
Call rows.Close
'destruction des objets
Set MonFic = Nothing
Set rows = Nothing
Set NomColonne = Nothing
Set FSys = Nothing
sdisp
Messages postés75Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention17 octobre 20081 25 août 2006 à 08:56
Re.
Merci je vais étudier cela.
Pour le .Net, j'ai mis ma question sur ce forum car il parlait d’oracle je n'ai pas fais attention que c'était du .NET (je ne connais pas la différence en plus)
Je m'excuse si je me suis trompé de catégorie
sdisp
Messages postés75Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention17 octobre 20081 25 août 2006 à 09:04
Encore moi.
il est dans quoi le Menu Projet => Références => APRES IL Y A PLUS QU A COCHER; ?
Et quand je met Dim nomVariable As type de varible ca plante et me met "fin d'instruction attendu" ?
Que dois je faire?
sdisp
Messages postés75Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention17 octobre 20081 25 août 2006 à 10:29
1 - En faite je sais pas du tout, moi j'ai juste fais un fichier avec le script que j'ai mis dans ma 1er question, je les nommé en.vbs et ça a marché, j'ai regardé dans programme file et dans ajouter supprimer et j'ai pas de vb ou visual basic.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>
2 - en faite j'ai testé ton code et toutes les lignes du debut fond l'erreur :
Dim
connection As New ADODB.connection
'Objet contenant le resultat d'une requete
Dim rows As New ADODB.Recordset
'represente Un champ d'un recordset
Dim NomColonne As ADODB.Field
Dim FSys As New FileSystemObject
'Variable pour ecrire dans un fiochier
Dim MonFic As TextStream
'Variable de parametre de connection
Dim connectionString As String
'Variable pour concatener les ligne
Dim StrResult As String