Ciao a tutti, sto realizzando un progetto in Vb.Net.Una anagrafica operatori. Ho usato il databindings sui controlli, un po per velocità, un po per curiosità. Mma devo dire che nn mi sto trovando per nulla bene. In particolare non va il metodo update.
il dataset su cui si appoggiano i controlli viene popolato in questo modo:
codice:
Try
Dim strCodUt, strSqlL As String
strCodUt = dbGridOperatori.Item(dbGridOperatori.CurrentRowIndex, 0)
strSqlL = "SELECT * FROM OPERATORI WHERE CODOP = '" & strCodUt & "'"
sqlAdapter.SelectCommand = New SqlCommand(strSqlL, sqlConn)
Dim cmdSql As New SqlCommandBuilder(sqlAdapter)
sqlAdapter.InsertCommand = cmdSql.GetInsertCommand
sqlAdapter.DeleteCommand = cmdSql.GetDeleteCommand
sqlAdapter.UpdateCommand = cmdSql.GetUpdateCommand
DsOperatori1.Clear()
sqlAdapter.Fill(DsOperatori1, "OPERATORI")
gestoreImg(txtStrPath.Text)
Catch ex As Exception
RaiseEvent Errore(Me.Text, ex)
End Try
dove dbGrid è una tabella con la lista degli utenti. Il dataset viene riempito in modo corretto,
e scrivendo all'interno dei controlli il dataset viene modificato (scrivo su un txt 'intero ds per controllo)
qui chiamo i metodo update
codice:
Dim i, j As Integer
Dim row As DataRow
Dim newRow(16) As Object
Dim str As String
For Each row In DsOperatori1.Tables("OPERATORI").Rows
str = str & j.ToString & ": "
For i = 0 To 16
str = str & " " & i.ToString & ":" & row.Item(i) & " stato: " & row.RowState.ToString & vbCrLf
Next
str = str & vbCrLf
j = j + 1
Next
MsgBox("dataset: " & vbCrLf & str)
Try
sqlConn.Open()
DsOperatori1.CaseSensitive = True
i = sqlAdapter.Update(DsOperatori1.Tables("OPERATORI"))
MsgBox("aggiornati " & i & " record")
sqlConn.Close()
Catch ex As Exception
RaiseEvent Errore(Me.Text, ex)
If sqlConn.State <> ConnectionState.Closed Then
sqlConn.Close()
End If
End Try
tutte le colonne del ds hanno lo stato unchanged anke se sono effettivamente cambiate. Come posso fare?
questo è il ds:
codice:
<?xml version="1.0" standalone="yes" ?>
<xs:schema id="dsOperatori" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="dsOperatori" msdata:IsDataSet="true" msdata:Locale="it-IT">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="OPERATORI">
<xs:complexType>
<xs:sequence>
<xs:element name="CODOP" type="xs:string" minOccurs="0" />
<xs:element name="NOME" type="xs:string" minOccurs="0" />
<xs:element name="CODREP" type="xs:string" minOccurs="0" />
<xs:element name="DATAASSUNZIONE" type="xs:dateTime" minOccurs="0" />
<xs:element name="DATAFINERAPP" type="xs:dateTime" minOccurs="0" />
<xs:element name="CODOPALT" type="xs:string" minOccurs="0" />
<xs:element name="CODQUAL" type="xs:string" minOccurs="0" />
<xs:element name="CODTURNAZ" type="xs:string" minOccurs="0" />
<xs:element name="FLGTRASM" type="xs:boolean" minOccurs="0" />
<xs:element name="FLGTRASMP" type="xs:boolean" minOccurs="0" />
<xs:element name="DATAINS" type="xs:dateTime" minOccurs="0" />
<xs:element name="DATAMOD" type="xs:dateTime" minOccurs="0" />
<xs:element name="GI_TOLLBEF" type="xs:float" minOccurs="0" />
<xs:element name="GI_TOLLAFT" type="xs:float" minOccurs="0" />
<xs:element name="GI_TIPOCTR" type="xs:float" minOccurs="0" />
<xs:element name="ORGANIZ" type="xs:string" minOccurs="0" />
<xs:element name="GI_PATHFOTO" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>