VB.Net Requete SQL Concatener 4 cellule en 1

Résolu
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 12 nov. 2009 à 14:26
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 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
A voir également:

8 réponses

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
12 nov. 2009 à 15:08
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
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
12 nov. 2009 à 16:14
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.
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
12 nov. 2009 à 15:00
Salut,

Il faut revoir ton instruction UPDATE.

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

Bon dev.
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
12 nov. 2009 à 15:08
Excuse nhervagault, nos mails se sont télescopés.


Calade
0

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

Posez votre question
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
12 nov. 2009 à 15:27
merci ca fonctionne
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
12 nov. 2009 à 15:48
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
12 nov. 2009 à 16:13
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.
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
12 nov. 2009 à 16:31
Merci Mayzz

Effectivement NB = nombre de ligne de mon DatGridView


merci
0
Rejoignez-nous