Bonjour
Désolé, j'ai encore un problème : Comment forcer un SQLCommandBuilder à
générer la commande Select après la commande update ou insert
(Ex : Update MATABLE set MaCol = @P1 WHERE MaClePrimaire = @P2 ; SELECT
MaCol FROM MATABLE WHERE MaClePrimaire = @P2 )
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Ambassadeur Kosh
apres un rapide coup d'oeil, à part en scotchant le sql du select à celui obtenu pour les autres, je vois pas comment faire. cf le code du Update dans le DbCommandBuilder. à voir si il faut creer son propre CommandBuilder ou si il faut integrer ce "concept" dans celui existant, je ne sais que dire...
Bonjour Désolé, j'ai encore un problème : Comment forcer un SQLCommandBuilder à générer la commande Select après la commande update ou insert (Ex : Update MATABLE set MaCol = @P1 WHERE MaClePrimaire = @P2 ; SELECT MaCol FROM MATABLE WHERE MaClePrimaire = @P2 )
Merci d'avance
apres un rapide coup d'oeil, à part en scotchant le sql du select à celui
obtenu pour les autres, je vois pas comment faire. cf le code du Update dans
le DbCommandBuilder. à voir si il faut creer son propre CommandBuilder ou si
il faut integrer ce "concept" dans celui existant, je ne sais que dire...
"alan" <alan@discussions.microsoft.com> a écrit dans le message de news:
CE68108A-AC2B-4C1E-BDCF-D1329A914A93@microsoft.com...
Bonjour
Désolé, j'ai encore un problème : Comment forcer un SQLCommandBuilder à
générer la commande Select après la commande update ou insert
(Ex : Update MATABLE set MaCol = @P1 WHERE MaClePrimaire = @P2 ; SELECT
MaCol FROM MATABLE WHERE MaClePrimaire = @P2 )
apres un rapide coup d'oeil, à part en scotchant le sql du select à celui obtenu pour les autres, je vois pas comment faire. cf le code du Update dans le DbCommandBuilder. à voir si il faut creer son propre CommandBuilder ou si il faut integrer ce "concept" dans celui existant, je ne sais que dire...
Bonjour Désolé, j'ai encore un problème : Comment forcer un SQLCommandBuilder à générer la commande Select après la commande update ou insert (Ex : Update MATABLE set MaCol = @P1 WHERE MaClePrimaire = @P2 ; SELECT MaCol FROM MATABLE WHERE MaClePrimaire = @P2 )
Merci d'avance
alan
Merci pour cette réponse, je vais voir ce que cela donne...
Pour information : le code transmit est en C... Je croyais être sur la newsgroup VB.NET :-)
"Ambassadeur Kosh" a écrit :
apres un rapide coup d'oeil, à part en scotchant le sql du select à celui obtenu pour les autres, je vois pas comment faire. cf le code du Update dans le DbCommandBuilder. à voir si il faut creer son propre CommandBuilder ou si il faut integrer ce "concept" dans celui existant, je ne sais que dire...
> Bonjour > Désolé, j'ai encore un problème : Comment forcer un SQLCommandBuilder à > générer la commande Select après la commande update ou insert > (Ex : Update MATABLE set MaCol = @P1 WHERE MaClePrimaire = @P2 ; SELECT > MaCol FROM MATABLE WHERE MaClePrimaire = @P2 ) > > Merci d'avance
Merci pour cette réponse, je vais voir ce que cela donne...
Pour information : le code transmit est en C... Je croyais être sur la
newsgroup VB.NET :-)
"Ambassadeur Kosh" a écrit :
apres un rapide coup d'oeil, à part en scotchant le sql du select à celui
obtenu pour les autres, je vois pas comment faire. cf le code du Update dans
le DbCommandBuilder. à voir si il faut creer son propre CommandBuilder ou si
il faut integrer ce "concept" dans celui existant, je ne sais que dire...
"alan" <alan@discussions.microsoft.com> a écrit dans le message de news:
CE68108A-AC2B-4C1E-BDCF-D1329A914A93@microsoft.com...
> Bonjour
> Désolé, j'ai encore un problème : Comment forcer un SQLCommandBuilder à
> générer la commande Select après la commande update ou insert
> (Ex : Update MATABLE set MaCol = @P1 WHERE MaClePrimaire = @P2 ; SELECT
> MaCol FROM MATABLE WHERE MaClePrimaire = @P2 )
>
> Merci d'avance
Merci pour cette réponse, je vais voir ce que cela donne...
Pour information : le code transmit est en C... Je croyais être sur la newsgroup VB.NET :-)
"Ambassadeur Kosh" a écrit :
apres un rapide coup d'oeil, à part en scotchant le sql du select à celui obtenu pour les autres, je vois pas comment faire. cf le code du Update dans le DbCommandBuilder. à voir si il faut creer son propre CommandBuilder ou si il faut integrer ce "concept" dans celui existant, je ne sais que dire...
> Bonjour > Désolé, j'ai encore un problème : Comment forcer un SQLCommandBuilder à > générer la commande Select après la commande update ou insert > (Ex : Update MATABLE set MaCol = @P1 WHERE MaClePrimaire = @P2 ; SELECT > MaCol FROM MATABLE WHERE MaClePrimaire = @P2 ) > > Merci d'avance
Ambassadeur Kosh
> Merci pour cette réponse, je vais voir ce que cela donne... Pour information : le code transmit est en C... Je croyais être sur la newsgroup VB.NET :-)
arf l'insulte : en C... manque pas un # à la fin ? :) voici donc la version VB avec mes plus plates excuses et je n'ai toujours pas trouvé comment faire. si tu connais le nom de l'assembly qui contient les designers pour les adapters et pour le dataset, on pourra répondre à la question. Private Function BuildUpdateCommand(ByVal mappings As DataTableMapping, ByVal dataRow As DataRow) As DbCommand Dim command1 As DbCommand = Me.InitializeCommand(Me.UpdateCommand) Dim builder1 As New StringBuilder Dim text2 As String = " SET " Dim num1 As Integer = 0 builder1.Append("UPDATE ") builder1.Append(Me.QuotedBaseTableName) Dim rowArray1 As DbSchemaRow() = Me._dbSchemaRows Dim num2 As Integer For num2 = 0 To rowArray1.Length - 1 Dim row1 As DbSchemaRow = rowArray1(num2) If (((Not row1 Is Nothing) AndAlso (row1.BaseColumnName.Length <> 0)) AndAlso Me.IncludeInUpdateSet(row1)) Then Dim obj1 As Object = Nothing Dim text1 As String = Me._sourceColumnNames(num2) If ((Not mappings Is Nothing) AndAlso (Not dataRow Is Nothing)) Then Dim column1 As DataColumn = Me.GetDataColumn(text1, mappings, dataRow) If ((column1 Is Nothing) OrElse (row1.IsReadOnly AndAlso column1.ReadOnly)) Then goto Label_0139 End If obj1 = Me.GetColumnValue(dataRow, column1, DataRowVersion.Current) If Not Me.SetAllValues Then Dim obj2 As Object = Me.GetColumnValue(dataRow, column1, DataRowVersion.Original) If ((obj2 Is obj1) OrElse ((Not obj2 Is Nothing) AndAlso obj2.Equals(obj1))) Then goto Label_0139 End If End If End If builder1.Append(text2) text2 = ", " builder1.Append(Me.QuotedColumn(row1.BaseColumnName)) builder1.Append(" = ") builder1.Append(Me.CreateParameterForValue(command1, Me.GetBaseParameterName(num2), text1, DataRowVersion.Current, num1, obj1, row1, StatementType.Update, False)) num1 += 1 End If Label_0139: Next num2 Dim flag1 As Boolean = (0 = num1) num1 = Me.BuildWhereClause(mappings, dataRow, builder1, command1, num1, True) command1.CommandText = builder1.ToString DbCommandBuilder.RemoveExtraParameters(command1, num1) Me.UpdateCommand = command1 If Not flag1 Then Return command1 End If Return Nothing End Function
> Merci pour cette réponse, je vais voir ce que cela donne...
Pour information : le code transmit est en C... Je croyais être sur la
newsgroup VB.NET :-)
arf l'insulte : en C... manque pas un # à la fin ? :)
voici donc la version VB avec mes plus plates excuses
et je n'ai toujours pas trouvé comment faire. si tu connais le nom de
l'assembly qui contient les designers pour les adapters et pour le dataset,
on pourra répondre à la question.
Private Function BuildUpdateCommand(ByVal mappings As DataTableMapping,
ByVal dataRow As DataRow) As DbCommand
Dim command1 As DbCommand = Me.InitializeCommand(Me.UpdateCommand)
Dim builder1 As New StringBuilder
Dim text2 As String = " SET "
Dim num1 As Integer = 0
builder1.Append("UPDATE ")
builder1.Append(Me.QuotedBaseTableName)
Dim rowArray1 As DbSchemaRow() = Me._dbSchemaRows
Dim num2 As Integer
For num2 = 0 To rowArray1.Length - 1
Dim row1 As DbSchemaRow = rowArray1(num2)
If (((Not row1 Is Nothing) AndAlso (row1.BaseColumnName.Length
<> 0)) AndAlso Me.IncludeInUpdateSet(row1)) Then
Dim obj1 As Object = Nothing
Dim text1 As String = Me._sourceColumnNames(num2)
If ((Not mappings Is Nothing) AndAlso (Not dataRow Is
Nothing)) Then
Dim column1 As DataColumn = Me.GetDataColumn(text1,
mappings, dataRow)
If ((column1 Is Nothing) OrElse (row1.IsReadOnly
AndAlso column1.ReadOnly)) Then
goto Label_0139
End If
obj1 = Me.GetColumnValue(dataRow, column1,
DataRowVersion.Current)
If Not Me.SetAllValues Then
Dim obj2 As Object =
Me.GetColumnValue(dataRow, column1, DataRowVersion.Original)
If ((obj2 Is obj1) OrElse ((Not obj2 Is
Nothing) AndAlso obj2.Equals(obj1))) Then
goto Label_0139
End If
End If
End If
builder1.Append(text2)
text2 = ", "
builder1.Append(Me.QuotedColumn(row1.BaseColumnName))
builder1.Append(" = ")
builder1.Append(Me.CreateParameterForValue(command1,
Me.GetBaseParameterName(num2), text1, DataRowVersion.Current, num1, obj1,
row1, StatementType.Update, False))
num1 += 1
End If
Label_0139:
Next num2
Dim flag1 As Boolean = (0 = num1)
num1 = Me.BuildWhereClause(mappings, dataRow, builder1, command1,
num1, True)
command1.CommandText = builder1.ToString
DbCommandBuilder.RemoveExtraParameters(command1, num1)
Me.UpdateCommand = command1
If Not flag1 Then
Return command1
End If
Return Nothing
End Function
> Merci pour cette réponse, je vais voir ce que cela donne... Pour information : le code transmit est en C... Je croyais être sur la newsgroup VB.NET :-)
arf l'insulte : en C... manque pas un # à la fin ? :) voici donc la version VB avec mes plus plates excuses et je n'ai toujours pas trouvé comment faire. si tu connais le nom de l'assembly qui contient les designers pour les adapters et pour le dataset, on pourra répondre à la question. Private Function BuildUpdateCommand(ByVal mappings As DataTableMapping, ByVal dataRow As DataRow) As DbCommand Dim command1 As DbCommand = Me.InitializeCommand(Me.UpdateCommand) Dim builder1 As New StringBuilder Dim text2 As String = " SET " Dim num1 As Integer = 0 builder1.Append("UPDATE ") builder1.Append(Me.QuotedBaseTableName) Dim rowArray1 As DbSchemaRow() = Me._dbSchemaRows Dim num2 As Integer For num2 = 0 To rowArray1.Length - 1 Dim row1 As DbSchemaRow = rowArray1(num2) If (((Not row1 Is Nothing) AndAlso (row1.BaseColumnName.Length <> 0)) AndAlso Me.IncludeInUpdateSet(row1)) Then Dim obj1 As Object = Nothing Dim text1 As String = Me._sourceColumnNames(num2) If ((Not mappings Is Nothing) AndAlso (Not dataRow Is Nothing)) Then Dim column1 As DataColumn = Me.GetDataColumn(text1, mappings, dataRow) If ((column1 Is Nothing) OrElse (row1.IsReadOnly AndAlso column1.ReadOnly)) Then goto Label_0139 End If obj1 = Me.GetColumnValue(dataRow, column1, DataRowVersion.Current) If Not Me.SetAllValues Then Dim obj2 As Object = Me.GetColumnValue(dataRow, column1, DataRowVersion.Original) If ((obj2 Is obj1) OrElse ((Not obj2 Is Nothing) AndAlso obj2.Equals(obj1))) Then goto Label_0139 End If End If End If builder1.Append(text2) text2 = ", " builder1.Append(Me.QuotedColumn(row1.BaseColumnName)) builder1.Append(" = ") builder1.Append(Me.CreateParameterForValue(command1, Me.GetBaseParameterName(num2), text1, DataRowVersion.Current, num1, obj1, row1, StatementType.Update, False)) num1 += 1 End If Label_0139: Next num2 Dim flag1 As Boolean = (0 = num1) num1 = Me.BuildWhereClause(mappings, dataRow, builder1, command1, num1, True) command1.CommandText = builder1.ToString DbCommandBuilder.RemoveExtraParameters(command1, num1) Me.UpdateCommand = command1 If Not flag1 Then Return command1 End If Return Nothing End Function