+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

[VS2010] Aggiornamento combo dopo Update record

  1. #1
    L'avatar di dolcissimo
    dolcissimo non  in linea Scribacchino
    Buongiorno a tutti...... ecco un'altra mia domanda, io ho questa sub che mi popola le mie combo dal mio db:
        Public Sub CaricaCboToolStrips()
    
            Dim sSQL As String = clsSQL.AllSelect("Materiale", "Materiale")
            cboMaterialeVirola.Items.Clear()
            cboMaterialeCielo.Items.Clear()
            cboMaterialeFondo.Items.Clear()
    
            On Error Resume Next
            Using connJET As OleDbConnection = New OleDbConnection(Program.oleDbGstCostiConnectionString)
                ' open connection
                connJET.Open()
    
                ' create the command object and store the sql query
                Dim aCommand As OleDbCommand = connJET.CreateCommand()
                aCommand.CommandText = sSQL
    
                Dim reader As OleDbDataReader = aCommand.ExecuteReader()
                If reader.HasRows Then
                    While reader.Read()
    
                        ' load record into comboboxs
                        'cboMateriale.Items.Add(reader("Materiale"))
                        cboMaterialeVirola.Items.Add(reader("Materiale"))
                        cboMaterialeCielo.Items.Add(reader("Materiale"))
                        cboMaterialeFondo.Items.Add(reader("Materiale"))
                        Debug.Print(reader("Materiale"))
                    End While
                End If
                reader.Close()
    
            End Using
     End Sub
    
    allora il mio problema :
    che quando apro il progetto questo mi popola le combo senza problemi, ma quando aggiungo o tolgo un materiale dal mi db sempre da progetto, e richiamo la sub per ospitare le moifiche apportate al mio db, vedo che le mie combo rimangono come prima senza modifiche, mi lascia sempre i stessi record ne uno meno e ne uno in pi, a secondo se aggiungo o cancello il record.. dove sbaglio?
    Ultima modifica di elisab; 07-12-2011 19:01 
    ℹ️ Leggi di pi su dolcissimo ...

  2. #2
    L'avatar di bumm
    bumm non  in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Probabilmente chiami la tua sub prima di aver mandato le modifiche al tuo database. Posta il codice che usi per aggiornare il tuo DB
    ℹ️ Leggi di pi su bumm ...

  3. #3
    L'avatar di dolcissimo
    dolcissimo non  in linea Scribacchino
    Questo il codice per l'Update:
        Private Function UpdateRecord(ByVal prmIDRecord As Long) As Boolean
            '
            ' UPDATE, or INSERT a new, record
            '
            ' Transaction is used (as real-world require)
            Dim OleDbTran As OleDbTransaction = Nothing
    
            ' if not data modified, why save it?
            If m_bModified = False Then Return False
    
            ' create the database connection
            Using connJET As OleDbConnection = New OleDbConnection(Program.oleDbGstCostiConnectionString)
    
                ' get SQL string
                Dim sSQL As String = clsSQL.MaterialeUpdate(prmIDRecord)
    
                Try
                    ' open connection
                    connJET.Open()
    
                    ' begin transaction
                    OleDbTran = connJET.BeginTransaction()
    
                    ' create the command object and set the sql query
                    Dim aCommand As OleDbCommand = connJET.CreateCommand()
                    aCommand.CommandText = sSQL
                    aCommand.Transaction = OleDbTran '<--- assign transaction to Command
    
                    aCommand.Parameters.Add("@Materiale", OleDbType.VarChar)
                    aCommand.Parameters.Add("@Prezzo", OleDbType.Currency)
    
                    aCommand.Parameters("@Materiale").Value = txtMateriale.Text
                    aCommand.Parameters("@Prezzo").Value = txtPrezzo.Text
    
                    ' execute Command
                    aCommand.ExecuteNonQuery()
    
                    ' Confirm changes, data will written definitively into the table
                    OleDbTran.Commit()
    
                    m_bModified = False         ' reset flag
                    m_bRecordChanged = True     ' notify to calling Form need grid to update
                    UpdateRecord = True         ' return success
    
                Catch ex As Exception
                    OleDbTran.Rollback()        ' failure, roolback changes
                    MessageBox.Show(ex.Message) ' show error message
                    UpdateRecord = False        ' return fall
    
                End Try
                'aggiorno le combo
                frmPrincipale.CaricaCboToolStrips()
            End Using
        End Function
    
    ℹ️ Leggi di pi su dolcissimo ...

  4. #4
    L'avatar di bumm
    bumm non  in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Cos' "frmPrincipale" com' dichiarato? Com' instanziato?
    ℹ️ Leggi di pi su bumm ...

  5. #5
    L'avatar di dolcissimo
    dolcissimo non  in linea Scribacchino
    frmPrincipale un form dove si trova la mia sub per l'aggiornamento delle combo...
    ℹ️ Leggi di pi su dolcissimo ...

  6. #6
    L'avatar di elisab
    elisab non  in linea Topo di biblioteca
    ma quando aggiungo o tolgo un materiale dal mi db sempre da progetto, e richiamo la sub per ospitare le moifiche apportate al mio db, vedo che le mie combo rimangono come prima senza modifiche, mi lascia sempre i stessi record ne uno meno e ne uno in pi, a secondo se aggiungo o cancello il record.. dove sbaglio?
                ' get SQL string
                Dim sSQL As String = clsSQL.MaterialeUpdate(prmIDRecord)
    
    La query non si vede ma penso che sia di Update per aggiornare la riga modificata con prmIDRecord come ID, non una quey di Insert n una di Delete per questo non hai n cancellazioni n nuovi inserimenti.
    ℹ️ Leggi di pi su elisab ...

  7. #7
    L'avatar di dolcissimo
    dolcissimo non  in linea Scribacchino
    cmq non mi funziona neanche con il Delete, e neanche con l'insert...... si normale che con l'update non f cambiamento..... posto il delete:
        Private Sub DeleteRecord()
            Dim sSQL As String = ""
            Dim sTitle As String = ""
            Dim sName As String = ""
    
            If dgw.Rows.Count = 0 Then Exit Sub
    
            ' store rows position
            Dim iTopRow As Integer = dgw.FirstDisplayedScrollingRowIndex
            Dim iCurRow As Integer
    
            Try
                iCurRow = dgw.CurrentRow.Index
            Catch ex As Exception
                iCurRow = 0
            End Try
    
    
            Dim IDRecord As Long = CLng(dgw.Rows(iCurRow).Cells(0).Value)
    
            If optMateriale.Checked = True Then
                ' delete current record from Publishers
                sSQL = clsSQL.MaterialeDelete(IDRecord)
                sTitle = "Materiale"
            Else
                ' delete current record from Authors
                sSQL = clsSQL.OpzioniDelete(IDRecord)
                sTitle = "Opzioni"
            End If
    
            sName = dgw.Rows(iCurRow).Cells(1).Value.ToString
    
            If MessageBox.Show("Cancello il record corrente:" + Environment.NewLine + sName + Environment.NewLine + Environment.NewLine + "Conferma?", sTitle, MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No Then
                Exit Sub
            End If
    
            ' Transaction is used (as real-world require)
            Dim OleDbTran As OleDbTransaction = Nothing
            Using connJET As OleDbConnection = New OleDbConnection(Program.oleDbGstCostiConnectionString)
                Try
                    ' open connection
                    connJET.Open()
    
                    ' begin transaction
                    OleDbTran = connJET.BeginTransaction()
    
                    Dim aCommand As OleDbCommand = connJET.CreateCommand()
                    aCommand.CommandText = sSQL
                    aCommand.Transaction = OleDbTran '<--- assign transaction to Command
    
                    ' execute command
                    aCommand.ExecuteNonQuery()
    
                    ' Confirm changes, data will written definitively into the table
                    OleDbTran.Commit()
    
                    ' reload data
                    LoadDataTable()
                    frmPrincipale.CaricaCboToolStrips()
    
                Catch ex As Exception
                    OleDbTran.Rollback()        ' failure, roolback changes
                    MessageBox.Show(ex.Message) ' show error message
    
                End Try
                'aggiorno le combo
                frmPrincipale.CaricaCboToolStrips()
            End Using
        End Sub
    
    ℹ️ Leggi di pi su dolcissimo ...

  8. #8
    L'avatar di bumm
    bumm non  in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    frmPrincipale un form dove si trova la mia sub per l'aggiornamento delle combo...
    Mi sembra chiaro dalla descrizione. La domanda : Come la dichiari questa variabile e come assegni il valore? Oppure stai tentando di accedere al metodo di una classe e non al metodo di istanza di quella classe?
    Un'altra domanda: Nel database vedi le modifiche?
    ℹ️ Leggi di pi su bumm ...

  9. #9
    L'avatar di dolcissimo
    dolcissimo non  in linea Scribacchino
    Si accedo al metodo di una classe, in questo caso accedo al metodo CaricaCboToolStrips() della classe "frmPrincipale"!

    Nel database vedi le modifiche?
    ho provato a mettere un interruzione prima dell'aggiornamento delle combo, ed ho visto che nel database le modifiche ci sono e anche le combo caricano i record modificati
    ma quando vado a vedere le combo, i nomi sono sempre uguali, e se chiamo il metodo CaricaCboToolStrips direttamente dalla clss frmprincipale le combo si aggiornano perfettamente...... non s se mi sono spiegato.
    ℹ️ Leggi di pi su dolcissimo ...

  10. #10
    L'avatar di bumm
    bumm non  in linea Topo di biblioteca Ultimo blog: [VB2010] ComboBox ed Enumeratori
    Non so come chiedertelo ancora.... "frmPrincipale" e il nome della tua classe o il nome della istanza di una tua classe???

    I metodi "UpdateRecord", "DeleteRecord" e altri che chiamano frmPrincipale.CaricaCboToolStrips(), sono dichiarati in un'altra classe?
    Se si, come passi nella classe con i metodi "UpdateRecord", "DeleteRecord" il riferimento all'istanza della form principale

    Per farti capire meglio:

    Public Class MyClass
    ...
    End Class
    
    Public Class AnotherClass
    Private MyClassInstance as New MyClass
    End Class
    
    MyClass - e il nome della classe
    MyClassInstance - e il nome di istanza della classe
    ℹ️ Leggi di pi su bumm ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 1
    Ultimo Post: 24-05-2017, 08:34
  2. Chiudere salvataggio record dopo query aggiornamento
    Da CESABAS nel forum Microsoft Access
    Risposte: 0
    Ultimo Post: 11-08-2014, 13:46
  3. vba update campo tabella dopo aggiornamento
    Da red_apple nel forum Microsoft Access
    Risposte: 3
    Ultimo Post: 21-06-2014, 09:22
  4. [VS2010]Ordinare Datatable dopo aggiornamento datagrid
    Da dolcissimo nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 28-02-2012, 13:05
  5. [Access 2007] riordinare record dopo aggiornamento dati
    Da Lion nel forum Microsoft Access
    Risposte: 8
    Ultimo Post: 31-03-2010, 15:50