[VB6] Scrittura - Lettura - Modifica di un record di un archivio

di il
1 risposte

[VB6] Scrittura - Lettura - Modifica di un record di un archivio

Buongiorno a tutti, da poco ho ripreso in mano visual basic 6.0
Vi espongo subito il tutto
Sto creando un programma per la gestione di una toelettatura.
Ho creato tutti i form , ma mi sono bloccato all'archivio.
Ho un form su i trattamenti dove si mostra l'elenco o si inserisce un nuovo, e queste due mi funzionano
Nella parte dove si mostra l'elenco volevo poter modificare.
form
form

Il form è composto da una:
-frame con i dati di scelta tra visualizzare l'elenco o inserimento
-frame con i campi dei dati da inserire e i commandbutton
-listbox a 1 colonna che legge l'archivio dei trattamenti,dat e li riporta all'interno in forma di lista

Quando seleziono un elemento nella lista mi va a cercarlo nella l'archivio e mi riporta gli stessi dati nel frame sottostante, a quel punto vorrei poter modificare o eliminare il record ma non mi funziona
Questo quando mostro l'elenco:
Private Sub optElenco_Click()
    'impostazioni grafiche
    frmTrattamenti.Height = 6120
    frmTrattamenti.Width = 5730
    fraInserimento.Visible = True
    fraInserimento.Top = 3240
    fraInserimento.Left = 120
    btnModifica.Visible = True
    btnElimina.Visible = True
    btnSalva.Visible = False
    txtNome.Enabled = False
    txtCosto.Enabled = False
    optCane.Enabled = False
    optGatto.Enabled = False
    
    'Creo / apro archivio
    'assegno numero all'archivio
    NumTrattamento = FreeFile
    'apro archivio
    Open Trattamenti For Random As #NumTrattamento Len = Len(RecTrattamento)
    'Stampa risultati
    Seek #NumTrattamento, 1
    lstElenco.Clear
    Do While Not EOF(NumTrattamento)
        Get #NumTrattamento, , RecTrattamento
        lstElenco.AddItem RecTrattamento.Nome
    Loop
    
        Dim I As Double
        
        For I = 0 To lstElenco.ListCount - 1
            If lstElenco.Selected(I) Then
                lstElenco.RemoveItem (I)
            End If
        Next I
    
    'lstElenco.RemoveItem (lstElenco.ListCount)
    
    'chiudo archivio
    Close #NumTrattamento
    
    Modifica = False

End Sub
Questo quando seleziono dall'elenco

Private Sub lstElenco_Click()
   
    'Creo / apro archivio
    'assegno numero all'archivio
    NumTrattamento = FreeFile
    'apro archivio
    Open Trattamenti For Random As #NumTrattamento Len = Len(RecTrattamento)
    'mi posiziono all'inizio
    Seek #NumTrattamento, 1
    'Cerco quello che ho selezionato e lo stampo sotto
    Dim Trovato As Boolean
    Dim ArchivioVuoto As Boolean
    Trovato = False
    ArchivioVuoto = False
    Do While Trovato = False And ArchivioVuoto = False
        Get #NumTrattamento, , RecTrattamento
            If lstElenco.List(lstElenco.ListIndex) = "" Or lstElenco.List(lstElenco.ListIndex) = "-FINE-" Then
                MsgBox ("archivio vuoto oppure seleziona un altro trattamento")
                lstElenco.ListIndex = 0
                ArchivioVuoto = True
            Else
                If RecTrattamento.Nome = lstElenco.List(lstElenco.ListIndex) Then
                    Trovato = True
                    txtNome.Text = RecTrattamento.Nome
                    txtCosto.Text = CStr(RecTrattamento.Costo)
                    If RecTrattamento.Tipologia = True Then optCane.Value = True ' è x gatto
                    If RecTrattamento.Tipologia = False Then optGatto = True ' è per cane
                    Modalita = False
                    Loc (NumTrattamento)
                End If
            End If
    Loop
    
End Sub
Il tasto salva mi va a salvare all'inserimento ma a modificare al momento che clicco su modifica.
Private Sub btnModifica_Click()
    btnSalva.Visible = True
    btnSalva.Enabled = True
    Modifica = True
    btnModifica.Visible = False
    btnModifica.Enabled = False
    btnElimina.Visible = False
    btnElimina.Enabled = False
    txtNome.Enabled = True
    txtCosto.Enabled = True
    optCane.Enabled = True
    optGatto.Enabled = True
    Modalita = False
    'Acquisisco i dati da modificare
    NomeDaModificare = txtNome.Text
    CostoDaModificare = txtCosto.Text
    If optCane.Value = True Then TipoDaModificare = True
    If optGatto.Value = True Then TipoDaModificare = False
    NumRecord = Loc(NumTrattamento)
End Sub

Private Sub btnSalva_Click()
    btnSalva.Visible = False
    btnSalva.Enabled = False
    ' controllo se sono in versione inserimento
    'Inserimento o Modifica
    'se sono in versione inserimento
    If Modalita = True Then
            
        'Creo / apro archivio
        'assegno numero all'archivio
        NumTrattamento = FreeFile
        'apro archivio
        Open Trattamenti For Random As #NumTrattamento Len = Len(RecTrattamento)
        
        'Mi posiziono in fondo all'archivio
        Seek #NumTrattamento, (LOF(NumTrattamento) / Len(RecTrattamento)) + 1
        
        'acquisisco i dati
        If txtNome.Text = "" Or txtCosto.Text = "" Or (optCane.Value = False And optGatto.Value = False) Then
            MsgBox ("Errore non hai compilato tutti i campi")
        Else
            RecTrattamento.Nome = txtNome.Text
            RecTrattamento.Costo = Val(txtCosto.Text)
            If optCane.Value = True Then RecTrattamento.Tipologia = True
            If optGatto.Value = True Then RecTrattamento.Tipologia = False
            'Inserico i dati nell'archivio
            Put #NumTrattamento, , RecTrattamento
            'Azzero le caselle
            txtNome.Text = ""
            txtCosto.Text = ""
            optCane.Value = False
            optGatto.Value = False
        End If
        'chiudo archivio
        Close #NumTrattamento
        optInserisci.Value = False
        optElenco.Value = False
    Else ' se sono in versione modifica
        If txtNome.Text = "" Or txtCosto.Text = "" Or (optCane.Value = False And optGatto.Value = False) Then
            MsgBox ("Errore non hai compilato tutti i campi")
        Else
            
            RecTrattamento.Nome = txtNome.Text
            RecTrattamento.Costo = Val(txtCosto.Text)
            If optCane.Value = True Then RecTrattamento.Tipologia = True
            If optGatto.Value = True Then RecTrattamento.Tipologia = False
            Put #NumTrattamento, NumTrattamento, RecTrattamento
        End If
    End If
End Sub
Non capisco cosa sbaglio, invece di modificare il record mi va a inserirne uno nuovo

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte