IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

[ADO.Net][VB.Net] Comment faire requête dynamique Access ?


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 21
    Par défaut [ADO.Net][VB.Net] Comment faire requête dynamique Access ?
    Bonjour,

    Je cherche à effectuer une requête (genre LIKE) sur une base Access(2000), qui doit aboutir dans un Datagrid.
    Je me suis inspiré de cette source pour établir le code
    http://www.issociate.de/board/goto/7...arameters.html
    Si je fais LIKE 'BLABLA%' j'obtiens les résultats dans mon Datagrid, donc '%' fonctionne bien. Dès que j'introduit '?%' les problèmes commencent... j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans system.data.dll
    en pointant la ligne : da.Fill(Dataset11)

    Voici mon code avec une des tentatives :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub FrmTitre_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim iData As IDataObject = Clipboard.GetDataObject()      ' récupération du texte depuis le Clipboard
            If iData.GetDataPresent(DataFormats.Text) Then
                Txtbox1.Text = CType(iData.GetData(DataFormats.Text), String)
            Else
                Txtbox1.Text = "Impossible de récupérer le texte"
            End If
     
            Dim conn As OleDbConnection
            conn = OleDbConnection1
            Dim da As OleDbDataAdapter = New OleDbDataAdapter
            Dim cmd As OleDbCommand
            cmd = New OleDbCommand("SELECT CodeDVD, TitreOrigine, TitreTraduit, Divers, Annee FROM Films " & _
                         "WHERE (CodeSupport=1) AND (TitreOrigine LIKE '%' + [at]name + '%') ORDER BY TitreOrigine", conn)
            cmd.Parameters.Add("@CodeDVD", OleDbType.Integer, 8)
            cmd.Parameters.Add("@TitreOrigine", OleDbType.VarChar, 100)
            cmd.Parameters.Add("@TitreTraduit", OleDbType.VarChar, 100)
            cmd.Parameters.Add("@TitreOrigine", OleDbType.VarChar, 100)
            cmd.Parameters.Add("@Divers", OleDbType.VarChar, 100)
            cmd.Parameters.Add("@Annee", OleDbType.Numeric, 8)
            cmd.Parameters.Add(New OleDbParameter("[at]name", OleDbType.VarChar, 20)).Value = Txtbox1.Text
            da.SelectCommand = cmd
            DataSet11.Clear()
            da.Fill(DataSet11, "Films")
        End Sub
    Mon code est mauvais (c'est bien possible... ) ou ce que je demande de faire n'est pas possible avec Access ? Une autre manière de procéder peut-être ?
    PS : Les champs faisant l'objet des requêtes ne sont pas des clés primaires.
    Apès 3 semaines de recherches un peu d'aide ferait plaisir...
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut Re: [VBnet] Requête dynamique sur Access
    Je suppose que OleDbConnection1 a déjà été instancié avec la bonne chaine de connection
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Private query As String = "SELECT CodeDVD, TitreOrigine, " & _
         "TitreTraduit, Divers, Annee FROM Films " & _
         "WHERE (CodeSupport=1) AND " & _ 
         "(TitreOrigine LIKE '%?%')" & _
         " ORDER BY TitreOrigine"
     
    Private Sub FrmTitre_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
      Dim iData As IDataObject = Clipboard.GetDataObject()
      If iData.GetDataPresent(DataFormats.Text) Then
         Me.Txtbox1.Text = CType(iData.GetData(DataFormats.Text), String)
         Me.InitDataSet11(Me.Txtbox1.Text)
         Me.DataGrid1.SetDataBinding(DataSet11, "Films")
      Else : Me.Txtbox1.Text = "Impossible de récupérer le texte"
      End If
    End Sub
     
    Private Sub InitDataSet11(ByVal name As String)
      Dim da As OleDbDataAdapter
      'Normalement le DataAdapter devrait ouvrir et fermer la connection
      Try
          da = New OleDbDataAdapter(Me.query.Replace("?", name), Me.OleDbConnection1)
          Me.DataSet11.Clear()
          da.Fill(Me.DataSet11, "Films")
       Catch ex As Exception
          MessageBox.Show(ex.ToString())
       End Try
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 21
    Par défaut
    Impeccable, cela marche à merveille...
    Merci mille fois pour le coup de main, du travail de Pro !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/04/2009, 04h27
  2. Réponses: 0
    Dernier message: 03/12/2007, 12h28
  3. Réponses: 3
    Dernier message: 01/12/2006, 20h31
  4. [VB.Net ][1.1] Comment faire un site multilingue ?
    Par didoboy dans le forum ASP.NET
    Réponses: 8
    Dernier message: 25/10/2006, 10h46
  5. [Vs.Net & SQL Serveur] Comment faire fonctionner le Débu
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/08/2005, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo