Rechercher : dans
Par :

Afficher resultat requete sql dans datagrid

Dernière réponse le 19 jun 2008 à 10:20:52 La.Cata, le 16 jun 2008 à 19:29:13 
 Signaler ce message aux modérateurs

Bonjour,
Je debute sous VB 6 et j'aimerai afficher le résultat d'une requete sql dans un datagrid. J'ai mis ma requete dans une variable string nommée requete. Sur un site j'ai obtenu le code suivant :

Sub remplir_grid()
Dim sql As String
Dim ds As DataSet
String = "execute" & requete
DataSet = c.GetDatta(sql)
Try
MaDataGrid.DataSource = ds
MaDataGrid.DataBind()
Catch ex As Exception
End Try
End Sub

Seulement j'obtiens une erreur de compilation ligne 8 ( expression = attendue). Du coup je suis bloqué. Si quelqu'un pouvait me dire ce qui cloche ou me donner une autre manière d'y arriver ça me sauverait la vie.

Configuration: Windows XP
Firefox 2.0.0.14

Meilleures réponses pour « afficher resultat requete sql dans datagrid » dans :
Exécution de requêtes avec JDBC VoirExécution d'une requête SQL Pour exécuter une requête SQL, il s'agit dans un premier temps de créer un objet Statement, pouvant être obtenu à partir de l'objet Connection. Un objet ResultSet permettra de récupérer les données en provenance de...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...

1

Milou2211, le 16 jun 2008 à 21:09:57

Bonjour,

J'ai une astuce plus directe :

1. je crée un dataenvironnement dans lequel je crée ma connexion à la base de données access, et les commandes (tables et requêtes) dont j'aurai besoin.

intérêt : pas de code à écrire, ouverture et fermeture de la connexion gérées par VB en direct, respectivemet lors de l'exécution et lors de l'arrêt de l'exécution.

2. dessin du datagrid dans mon formulaire

3. dans l'évènement form_load, ajout des informations de connexion du datagrid :

Private Sub Form_Load()

Set Me.DataGrid1.DataSource = DataEnvironment1 'nom de l'environnement de données créé
Me.DataGrid1.DataMember = "tquestions" 'nom de la commande créé dans le dataenvironment1

End Sub

4. exécution du formulaire : chargement automatique des données dans les colonnes

Cela répond-il à ta question ?

Répondre à Milou2211

2

La.Cata, le 16 jun 2008 à 21:30:01

Plus ou moins. En fait j'ai créé une procédure de recherche (affectée à un bouton) dans une table qui génère en fonction des critères de recherche une requete sql (select * from table where <critères>). Cette partie marche sans probleme. Il ne reste plus qu'à l'exécuter et à afficher les résultats dans le datagrid. Ta méthode marche mais elle n'agit qu'au chargement de la feuille. Y a-t-il un moyen de l'adapter, je n'y arrive pas (quand j'ai essayé le datagrid s'est vidé)

Répondre à La.Cata

3

Milou2211, le 17 jun 2008 à 07:52:51

Normal qu'elle ne foncionne qu'au chargement de la feuille : la procédure est inclue dans l'évènment form_load.

Il vaudrait donc mieux déplacer le chargement du datagrid dans l'évènement bouton_clic()

De plus, le résultat étant dynamique, il faut penser à remettre à blanc le datagrid avant chargement.

Ceci est un exemple rapide à insérer dans le bouton_clic, mais je pense que l'on peut encore mieux faire.
Me.DataGrid1.DataMember = ""
Set Me.DataGrid1.DataSource = DataEnvironment1 'nom de l'environnement de données créé
Me.DataGrid1.DataMember = "tquestions" 'nom de la commande créé dans le dataenvironment1 (ta requête SQL)

Répondre à Milou2211

4

La.Cata, le 18 jun 2008 à 22:24:04

Cooooooooool ça tourne ! Ah ça fait plaisir. En fait quand j'ai mis ton code, la première exécution a marché mais après impossible de rafraichir le datagrid (un chichi de vb que j'ai pas compris du tt) du coup j'ai essayé plutot de rafraichir l'Adodc. Ce qui donne

Adodc.RecordSource = requete ' où requete contient le code sql
Adodc.Refresh

Maintenant ça marche au poil. Merci pour tout, j'avais franchement pas pensé à utiliser l'adodc de cette manière.

Répondre à La.Cata

5

 Milou2211, le 19 jun 2008 à 10:20:52

BRAVO.

Bonne continuation.

Répondre à Milou2211