Construction dynamique de requête sql (VB.Net)

cs_Suffren Messages postés 92 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 9 août 2004 - 14 juin 2004 à 11:10
nadoutaty Messages postés 5 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 9 avril 2010 - 9 avril 2010 à 03:21
Bonjour,
Je souhaite réaliser la mise à jour d'une base Access via un formulaire et une fonction générique qui utilise une requête créée dynamiquement.
Comment puis-je faire si je récupère les noms de champ et les valeurs à mettre dans la bd dans une autre fonction?

 For Each Controle In nom_page.Controls(1).Controls
        'Récupération de l'ID du contrôle cournat
         nomchamp = Controle.ID
         If Left(nomchamp, 4) Like "Text" Then
                nom = nomchamp.Remove(0, 4)
                'Parcours des colonnes récupérées dans le datatable
                For Each objDataCol In objDataTable.Columns
                    nom_champ = objDataCol.ColumnName
                    If nom_champ.Equals(nom) Then
                        texte = nom_page.Controls(1).FindControl("Text" + nom)
                        valeur = texte.Text
                        sql2 = rq.ConstrRequete(nom_champ, valeur)
                    End If
                    Exit For
                Next
            End If
Next


J'espère avoir été assez claire et merci d'avance pour vos réponse

Cordialement,
Suffren

6 réponses

cs_thigo Messages postés 44 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 15 juin 2006
22 juin 2004 à 10:31
G pas compris la question...

:question)
0
cs_Suffren Messages postés 92 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 9 août 2004
22 juin 2004 à 10:48
Bonjour,
Je souhaite mette à jour une base Access 2000 avec une requête définie dynamiquement par parcours des textbox de mon formulaire mais le contenu de la requête donne :
Update client Set Num_client,Nom="Yagudin",Adresse="Yebelevnyedf",Ville="St Pétersbourg",type_service="Patinage" Where Num_client= 15;

Je voudrais enlever le champ Num_client car il est en lecture seule (il ne doit pas être modifié).
La requête se construit avec trois chaîne de caractères de la façon suivante :

EnteteSQL = "Update client Set "
FinSQL = " Where Num_client= " & IDClient & ";"

'Parcours des contrôles de la page
For Each Controle In nom_page.Controls(1).Controls
     nomchamp = Controle.ID
      If Left(nomchamp, 4) Like "Text" Then
            nom = nomchamp.Remove(0, 4)
            For Each objDataCol In objDataTable.Columns
                  texte = nom_page.Controls(1).FindControl("Text" & nom)
                  If texte.ReadOnly = False Then
                        valeur = texte.Text
                        MilieuSQL = VerifType(objDataCol, valeur)
                        Exit For
                  Else
                        Exit For
                  End If
                  Exit For
             Next
             'Marche pour les string
              ListeChgts = ListeChgts & nom & MilieuSQL & ","
              'ListeChgts = ListeChgts & nom & "=""" & valeur & ""","
    End If
Next

'On enlève la dernière virgule superflue
ListeChgts = Left(ListeChgts, Len(ListeChgts) - 1)

sql2 = EnteteSQL & ListeChgts & FinSQL


Auriez-vous une idée pour ne plus avoir le champ Num_client?
Cordialement,
Suffren
0
cs_thigo Messages postés 44 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 15 juin 2006
22 juin 2004 à 11:08
Soit j'ai pas compris, soit la réponse est simple, mais il semble qu'il suffise juste de ne pas mettre ce fameux champs dans le set de la requête comme ci dessous

Update client Set nom="Yagudin",Adresse="Yebelevnyedf",Ville="St Pétersbourg",type_service="Patinage" Where Num_client= 15;
0
cs_Suffren Messages postés 92 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 9 août 2004
22 juin 2004 à 11:21
D'accord mais au vu de la boucle For comment puis-je enlever ce champ alors que c'est le premier textbox qu'il trouve lors du parcours des contrôles de la page?
Cordialement,
Suffren
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Suffren Messages postés 92 Date d'inscription vendredi 4 juillet 2003 Statut Membre Dernière intervention 9 août 2004
22 juin 2004 à 11:29
Infos sur la fonction VerifType :

Public Function VerifType(ByRef objDataCol As DataColumn, ByVal valeur As String) As String

If objDataCol.DataType Is System.Type.GetType("System.Integer") Then
       MilieuSQL = "= ' & valeur & ' "
Else 'If objDataCol.DataType Is System.Type.GetType("System.String") Then
      MilieuSQL = "=""" & valeur & """"
End If
Return MilieuSQL
    End Function


Il semble ne tenir compte que du Else mais j'ignore pourquoi.
Cordialement,
Suffren
0
nadoutaty Messages postés 5 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 9 avril 2010
9 avril 2010 à 03:21
bsr, je suis trés besoin de la requette de authentification login et password et merci urgent svp en (vb.net+sql server et vb.net+ access)
0
Rejoignez-nous