Bonjour à tous,

Je suis nouveau ici donc j'espère que je poste au bon endroit...
Voici mon problème:
j'ai une base de donnée stoquée en sql serveur, dont les manipulations se font via un programme VB 2005. Chaque année, on reçoit un fichier d'update global, que le programme VB traite. Celui-ci met à jour toutes les data base présent dans mon sql serveur. Cependant, il n'arrive pas à updater une table en particulier, pour une raison vraiment étrange (je ne suis pas informaticien pûre souche, mais j'ai discuté avec des vrais informaticiens et ils ne comprennent pas non plus).
Voici le code de l'update:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
        Public Sub UpdateASSOCIATE(ByVal drAssociate As XSD_Sabam.XSD.ASSOCIATERow, ByVal AncienCodeSabam As String)
 
        Dim sqlTransac As SqlClient.SqlTransaction
        Dim sqlCommand As New SqlClient.SqlCommand
        OpenConnexionSQL()
        sqlTransac = sqlConnexion.BeginTransaction("UpdateASSOCIATE")
 
        Try
            With sqlCommand
                .Connection = sqlConnexion
                .Transaction = sqlTransac
                .Parameters.AddWithValue("@AncCodeSabam", AncienCodeSabam.Trim.ToString)
                .Parameters.AddWithValue("@CodeSabam", drAssociate.CodeSabam.ToString)
                .Parameters.AddWithValue("@Name", drAssociate.Name.ToString)
                .Parameters.AddWithValue("@FirstName", drAssociate.FirstName.ToString)
                .Parameters.AddWithValue("@DateOfBirth", CDate(drAssociate.DateOfBirth.ToString))
                .Parameters.AddWithValue("@Sex", drAssociate.Sex.ToString)
 
                If drAssociate.IsDateFirstAmountNull Then
                    .Parameters.AddWithValue("@DateFirstAmount", SqlTypes.SqlDateTime.Null)
                Else
                    .Parameters.AddWithValue("@DateFirstAmount", CDate(drAssociate.DateFirstAmount.ToString).ToString)
                End If
 
                If drAssociate.IsDateReportNull Then
                    .Parameters.AddWithValue("@DateReport", SqlTypes.SqlString.Null)
                Else
                    .Parameters.AddWithValue("@DateReport", CDate(drAssociate.DateReport.ToString).ToString)
                End If
 
                .Parameters.AddWithValue("@Type", drAssociate.Type.ToString)
                .Parameters.AddWithValue("@Nature", drAssociate.Nature.ToString)
 
                .CommandText = "update ASSOCIATE " & _
                               "SET CodeSabam = @CodeSabam " & _
                               ",Name = @Name " & _
                               ",FirstName = @FirstName " & _
                               ",DateOfBirth = @DateOfBirth " & _
                               ",sex = @sex " & _
                               ",DateFirstAmount = @DateFirstAmount " & _
                               ",DateReport = @DateReport " & _
                               ",Type = @Type " & _
                               ",Nature = @Nature " & _
                               "WHERE (CodeSabam = @AncCodeSabam)"
 
                .ExecuteNonQuery()
Au moment d'exécuter la requête, il m'indique le message d'erreur suivant:

"Subquery returned more than one value. This is not permitted when the subquerry follows =, !=, <, <=, >, >= or when the subquerry is used as an expression. The statement has been terminated".

Ce que je comprend encore moins, c'est que lorsqu'il s'agit d'updater une personne qui a été insérée juste l'année d'avant (donc une fois), cela marche ! L'update intervient en fait quand la personne atteint l'age de 60 ans, car alors il touche un capital retraite et le champ "datefirstamount" et "nature" doit être updaté. Donc si qqun s'affilie à 59 ans, on insére une ligne avec ses caractéristique dans la table ASSOCIATE, et à 60 ans l'update se passe correctement. Mais si il rentre avant (50 ans par exemple). J'obtiens l'erreur ci-dessus !

Je ne sais pas si je vous ai fourni assez de renseignements, mais si vous voulez des précisions n'hésitez pas à me les demander, et toute aide est la bienvenue !

D'avance merci à tous,

Bonne journée

Christophe