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

cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 12 nov. 2009 à 14:26 - Dernière réponse : cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention
- 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
Calade 1212 Messages postés dimanche 20 avril 2003Date d'inscription 4 juin 2016 Dernière intervention - 12 nov. 2009 à 15:08
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

Merci Calade 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Calade
Meilleure réponse
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 12 nov. 2009 à 16:14
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.

Merci Mayzz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Mayzz
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 12 nov. 2009 à 15:00
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
Calade 1212 Messages postés dimanche 20 avril 2003Date d'inscription 4 juin 2016 Dernière intervention - 12 nov. 2009 à 15:08
0
Merci
Excuse nhervagault, nos mails se sont télescopés.


Calade
Commenter la réponse de Calade
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 12 nov. 2009 à 15:27
0
Merci
merci ca fonctionne
Commenter la réponse de cs_JeffC1977
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 12 nov. 2009 à 15:48
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
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 12 nov. 2009 à 16:13
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
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 12 nov. 2009 à 16:31
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.