Vb6 et acces : chaine caractère

eagleleader -  
mounaattia Messages postés 42 Statut Membre -
Voici mon code :

rs.Open "select info_titre from T_infos where titre = '" & Form1.Text1.Caption & "'", db, adOpenStatic, adLockOptimistic

Le problème c'est que lorsqu'il y a un " ' " (apostrophe dans la chaine de caractères, il me met une erreur et ce qui est logique vu que la syntaxe lui dit ' ... '

Mais alors comment résoudre mon problème ??? Sachant que je ne peux modifier ce qui se trouve dans mes bases

5 réponses

  1. deus Messages postés 93 Statut Membre 91
     
    Moi pour contourner ce problème j'ai crée la focntion suivante:
    "
    Function PrepareString(Instring)
    If Not IsNull(Instring) Then
    PrepareString = "'" & Replace(Instring, "'", "' + CHAR(39) + '") & "'"
    Else
    PrepareString = "Null"
    End If
    End Function

    "
    et donc ton code devient :

    rs.Open "select info_titre from T_infos where titre = ' " & PrepareString(Form1.Text1.Caption) & " ' ", db, adOpenStatic, adLockOptimistic

    Voilà, j'espère que ca t'aide

    dEUS

    What Jesus can't fix tonight,
    The Whisky certainly might.
    1
  2. zied
     
    comment récuperé les information qui se trouve dans une requette sql ave vb6
    sql="select nom,code from emp where num=2"
    comment utiliser les information trouvé dans nom et code dans la suite de mon prg
    merci d'avance
    1
    1. eagleleader Messages postés 4 Statut Membre 1
       
      Et bien tu dois établir une connexion à la base de données, ensuite c'est simple tu crées ta requete sql :

      dim db as Connection
      dim rs as Recordset

      ' connexion à la base de donnees
      Set db = New ADODB.Connection
      db.CursorLocation = adUseClient
      db.Open "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\emp.mdb;" (si elle se trouve dans le meme répertoire que l'application sinon tu dois donner le chemin complet

      ' création de l'objet recordset
      Set RS = New ADODB.Recordset

      ensuite tu crées ta requete sql :

      RS.Open "select nom,code from emp where num=2", db, adOpenStatic, adLockOptimistic
      RS.MoveLast
      ' affichage des résultats
      Text1.Text = RS.Fields("nom")
      Text2.Text = RS.Fields("code")

      Text1 et 2 sont 2 textbox sur une feuille et elles afficheront les réponses sinon tu peux utiliser n'importe quel objet qui permet d'afficher les résultats.
      0
      1. zied > eagleleader Messages postés 4 Statut Membre
         
        merci pour votre aide
        j'ai un petit prob lors de l'execution un message s'affiche "type de donné incompatible dans l'expression du critére on me sélectionné toute la ligne de ma requette sql
        rs.Open "select ORDRE,CODCARTE from EMP where CODEMP=' " & A & " '", db, adOpenStatic, adLockOptimistic
        0
    2. zied
       
      merci pour votre aide
      j'ai un petit prob lors de l'execution un message s'affiche "type de donné incompatible dans l'expression du critére on me sélectionné toute la ligne de ma requette sql
      rs.Open "select ORDRE,CODCARTE from EMP where CODEMP=' " & A & " '", db, adOpenStatic, adLockOptimistic
      0
      1. RicHamilton Messages postés 49 Statut Membre > zied
         
        Salut,
        Eh bien concernant ton pb avec l'apostrophe, Access ne le reconnaît ke par deux apostrophes ''. Donc ce ke tu auras a faire, c'est ceci :

        'Fonction ki transforme la quote en double quotes
        Function DoubleQuote(str as String) as String
        DoubleQuote = Replace(str,"'","''")
        End Function
        Cette fonction te sera utile lorske tu voudras par exemple enregistrer ou mettre à jour des données :
        Insert into ETUDIANT(NumEtud, NomEtud, DateNaiss) VALUES(" & txtNum.text & ",'" & DoubleQuote(txtNom.text) & "',#" & txtDate.text & "#);

        Maintenant si tu voudrais par exemple afficher ces memes données dans un autre formulaire tu feras donc :

        'Fonction ki transforme les double-quotes en quote
        Function Quote(str as String) as String
        Quote = Replace(str,"''","'")
        End Function

        Ensuite par exemple :

        Select NumEtud from ETUDIANT Where NomEtud = '" & Quote(txtNom.text) & "';


        En ce qui concerne ton 2e pb, vérifie ke le critère de recherche de ta requête a le meme type ke celui du champ dans la base de données.
        0
  3. Roulito
     
    Salut.
    J'ai été confronté à ce problème.
    Plusieurs solutions :
    => Changer l'apostrophe par le caractère apostrophe tournée dans l'autre sens.
    => Supprimer les apostrophe et les remplacer par un espace dans ta base.
    Cela a faire dans la chaine qui te pose problème. Tu le fais où tu veux, mais avant d'exécuter la requête.
    @+
    Roulito
    0
  4. eagleleader Messages postés 4 Statut Membre 1
     
    Le problème étant que je ne peux pas modifier mes bases car elles sont très grosses et non touchables !!! Mais merci quand même.

    J'espère qu'il existe une fonction qui permet d'éviter ce problème ou que quelqu'un connaît la solution.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mounaattia Messages postés 42 Statut Membre 3
     
    Bonjour,
    Dans mon code je veux extraire le premier caractére d'une chaine de caractére donnée puis de trouver tous les noms qui débuterons par ce caractére dans la base de données access.
    SVP je veux le code qui me permet de faire ça.
    merci d'avance
    0