Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Vb.Net] DataBindings

    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>
    -----
    101110101011101111100000
    -----

  2. #2
    scusa ma non riesco a vedere in quale parte del codice modifichi i dati nel dataset... poi dovresti dare un'occhiata al tuo codice e cercare di utilizzare comandi del net e non quelli del vb6...
    I database... la mia passione + o -

  3. #3
    Originariamente inviato da power.mobile
    scusa ma non riesco a vedere in quale parte del codice modifichi i dati nel dataset... poi dovresti dare un'occhiata al tuo codice e cercare di utilizzare comandi del net e non quelli del vb6...
    codice:
    i = sqlAdapter.Update(DsOperatori1.Tables("OPERATORI"))
    qui faccio l'aggiornamento. poi questo è codice vb.net, non vb!!!!!! nn so perchè tu dica che è vb.
    -----
    101110101011101111100000
    -----

  4. #4
    bè... RAISEEVENT o MSGBOX sono di vb6 e non del net.... inoltre la riga che mi hai specificato:

    codice:
    i = sqlAdapter.Update(DsOperatori1.Tables("OPERATORI"))
    aggiorna i dati del db dal dataset. ma dove modifichi i dati nel dataset?
    I database... la mia passione + o -

  5. #5
    Nella form,tramite DataBinding. Ogni textbox, combo etc... sono collegate al ds tramite databingings. non so se sai cos'è... quindi i dati sono modificati( e come ho detto prima, io scrivo il contenuto del ds prima e dopo che modifico ed è cambiato, ma lo stato rimane unchanged) Capito?
    -----
    101110101011101111100000
    -----

  6. #6
    Originariamente inviato da power.mobile
    bè... RAISEEVENT o MSGBOX sono di vb6 e non del net.... inoltre la riga che mi hai specificato:
    in risposta, se esistono anche in vb.net perchè non usarli? e in ogni modo peril problema che ho posto non centrano assolutamente nulla!
    -----
    101110101011101111100000
    -----

  7. #7

    Risolto

    Ho risolto il problema aggiungendo un controllo "BindingManagerBase" , al che assegnandolgi il bindingContext della form su cui deve agire, al momento del salvataggio lo sposto avanti di una posizione e poi lo faccio tornare indietro alla posizione originale, in tal modo vengono forzati i changedState nelle row del dataset. Grazie a tutti. Per chi ne avesse bisogno ditemelo che posto il codice.
    -----
    101110101011101111100000
    -----

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.