VB.Net Requete SQL Concatener 4 cellule en 1 [Résolu]

Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
- - Dernière réponse : cs_JeffC1977
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
- 12 nov. 2009 à 16:31
Bonjour à tous

Je cherche un moyen simple pour concatener 4 cellules en 1

J'ai un fichier Acces de plus de 1000 lignes et je dois me faire une boucle pour concatener 4 colonnes dans une colonne. Par exemple

Colonne1 Colonne2 Colonne3 Colonne4 Final
allo Salut Verger Saule alloSalutVergerSaule
12 34 56 78 12345678

Bref ma colonne Final est vide et je veux la remplir avec les 4 premiere colonne.

Je fais afficher l'enssemble de ma BD dans un DataGridView

J'utilise cette requête SQL
RequeteSQL "UPDATE BD SET Final '" & DataGridView1.CurrentRow.Cells(0).Value & "','" & DataGridView1.CurrentRow.Cells(1).Value & "','" & DataGridView1.CurrentRow.Cells(2).Value & "','" & DataGridView1.CurrentRow.Cells(3).Value & "'"



Ensuite j'utilise ce code pour modifier ma table
  Execute("BD")





 Public Sub Connect()

        'Repertoire = "P:\SCAN\Cadastre"
        Repertoire = Application.StartupPath

        'Dim SourceConnect As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Repertoire & "\Plan_Cadastre.mdb"
        Dim SourceConnect As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Repertoire & "\BD.mdb"
        SourceOle = New OleDbConnection(SourceConnect)
        Select Case SourceOle.State
            Case ConnectionState.Closed
                SourceOle.Open()
        End Select
    End Sub

    Public Sub Deconnect()
        Select Case SourceOle.State
            Case ConnectionState.Open
                SourceOle.Close()
                SourceOle.Dispose()
                SourceOle = Nothing
        End Select
    End Sub

    Public Function Execute(ByVal table As String) As DataView
        Connect()

        DataA = New OleDbDataAdapter(RequeteSQL, SourceOle)
        Dim DataS As New DataSet
        DataA.Fill(DataS, table)
        Dtt = DataS.Tables(table)

        Try 'la suite n'est pas obligatoire
            Return DataS.Tables(table).DefaultView 'on demande au dataset de renvoyer la reponse de la requetesql sous forme de datagridview
        Catch ex As Exception
            Return Nothing
        Finally
            Deconnect()
        End Try

    End Function



Mon bug se produit lorsque j'arrive sur cette ligne DataA.Fill(DataS, table) (DataAdapter) ca m'indique que ma requête comporte un problème

Erreur de syntaxe dans l'instruction UPDATE.



Qu'est ce que je ne fais pas de correct dans ma requête ?

merci de votre aide
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Dernière intervention
4 juin 2016
3
Merci
Bonjour,

Essaie comme ceci:

RequeteSQL "UPDATE BD SET Final " & DataGridView1.CurrentRow.Cells(0).Value +
DataGridView1.CurrentRow.Cells(1).Value +
DataGridView1.CurrentRow.Cells(2).Value +
DataGridView1.CurrentRow.Cells(3).Value

C'est à dire en virant les quotes qui signifient que le tout est un libellé. De plus il est sous-entendu que tes 4 colonnes sont bien du même type, sinon il faudra les CASTer.

Calade

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de Calade
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
3
Merci
Rows(i - 1) pardon

Par contre NB devra avoir comme valeur, le nombre de ligne du DataGridView

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de Mayzz
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
Salut,

Il faut revoir ton instruction UPDATE.

UPDATE table
SET c1='v1',
c2='v2'
WHERE c3 = 'v3'

Bon dev.
Commenter la réponse de nhervagault
Messages postés
1212
Date d'inscription
dimanche 20 avril 2003
Dernière intervention
4 juin 2016
0
Merci
Excuse nhervagault, nos mails se sont télescopés.


Calade
Commenter la réponse de Calade
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
0
Merci
merci ca fonctionne
Commenter la réponse de cs_JeffC1977
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
0
Merci
Rebonjour

J'aurais une autre question...

Je veux faire une boucle pour faire l'ensemble de la BD
j'utilise ce code mais ca ne fonctionne pas car il reste figé sur la premiere ligne du Datagrid

        Dim i As Integer
        For i = 1 To NB
            RequeteSQL "UPDATE BD SET Final " & DataGridView1.CurrentRow.Cells(0).Value + DataGridView1.CurrentRow.Cells(1).Value + DataGridView1.CurrentRow.Cells(2).Value + DataGridView1.CurrentRow.Cells(3).Value & " WHERE Cle = " & i
            Execute("BD")
        Next i



Ma colonne Final à la même valeur pour chaque ligne et vaut la valuer de la ligne 0 du datagrid ??

Bref comment changer le CurrentRow de DataGridView1.CurrentRow.Cells(2).Value afin qu'il puisse faire chaque ligne du DataGridView

merci
Commenter la réponse de cs_JeffC1977
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
0
Merci
Salut,

Remplace CurrentRow Par Rows(i)

@+

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
0
Merci
Merci Mayzz

Effectivement NB = nombre de ligne de mon DatGridView


merci
Commenter la réponse de cs_JeffC1977

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.