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

Signaler
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
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

8 réponses

Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
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
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
28
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.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

Il faut revoir ton instruction UPDATE.

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

Bon dev.
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
Excuse nhervagault, nos mails se sont télescopés.


Calade
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
merci ca fonctionne
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
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
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
28
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.
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
Merci Mayzz

Effectivement NB = nombre de ligne de mon DatGridView


merci