FORM PRINCIPALE:

codice:
Private Sub btt_salva_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btt_salva.Click
        If glb_int_id = 0 Then
            If controlloTextBox() = True Then
                glb_Apriconnessione()
                Dim obj_dataReader As OleDbDataReader = glb_dataReader("SELECT * FROM tbl_cliente WHERE nome_cliente = '" & txt_nome.Text & "' AND cognome_cliente = '" & txt_cognome.Text & "'")
                While obj_dataReader.Read()
                    caricaLista()
                    MessageBox.Show("Utente già inserito")
                    obj_dataReader.Close()
                    glb_chiudiConnessione()
                    Exit Sub
                End While
                glb_Apriconnessione()
                glb_int_id = 1
                obj_dataReader = glb_dataReader(recuperaIdMAx("id_cliente", "tbl_cliente"))
                If obj_dataReader.Read Then
                    If Not IsDBNull(obj_dataReader("nuovo_campo")) Then
                        glb_int_id = obj_dataReader("nuovo_campo") + 1
                    End If
                End If
                Dim str_sql As String = "INSERT INTO tbl_cliente (id_cliente, nome_cliente, cognome_cliente, indirizzo_cliente,telefono_cliente, note_cliente,attivo_cliente,email_cliente) VALUES (" & glb_int_id & ",'" & txt_nome.Text & "', '" & txt_cognome.Text & "','" & txt_indirizzo.Text & "','" & txt_telefono.Text & "','" & txt_note.Text & "',true,'" & txt_email.Text & "')"
                sh_risultatoNonQuery = glb_nonQuery(str_sql)
                If sh_risultatoNonQuery = 0 Then
                    MessageBox.Show("Inserimento non riuscito")
                End If
                obj_dataReader.Close()
                obj_dataReader = glb_dataReader(recuperaIdMAx("id_cliente", "tbl_cliente"))
                If obj_dataReader.Read Then
                    If Not IsDBNull(obj_dataReader("nuovo_campo")) Then
                        glb_int_operazione   = obj_dataReader("nuovo_campo") + 1
                    End If
                End If
                obj_dataReader.Close()
                Dim newYear = Microsoft.VisualBasic.Day(DateTime.Now) & "/" & Month(DateTime.Now) & "/" & Year(DateTime.Now) + 1
                Dim valoreTessera As Double
                Do
                    valoreTessera = CDbl(InputBox("Valore iniziale", "Inserire credito tessera"))
                    If Not IsNumeric(valoreTessera) Or valoreTessera < 0 Or valoreTessera > 100 Then
                        MessageBox.Show("Inserire un valore valido")
                    End If
                Loop While (Not IsNumeric(valoreTessera) Or valoreTessera < 0 Or valoreTessera > 100)
                str_sql = "INSERT INTO tbl_tessera (id_cliente, id_tessera, dataInizio_tessera, dataFine_tessera, credito_tessera, attivo_tessera) VALUES (" & glb_int_id & "," & glb_int_operazione & ",'" & CDate(DateTime.Now) & "', '" & CDate(newYear) & "','" & valoreTessera & "',true)"
                sh_risultatoNonQuery = glb_nonQuery(str_sql)
                glb_chiudiConnessione()
                obj_dataReader.Close()
                Me.Close()
                Call obj_frm_index.apriFrm_tessere() 
            End If
        Else
            If glb_int_id <> 0 Then
                If controlloTextBox() = True Then
                    glb_Apriconnessione()
                    If Trim(txt_note.Text) = "" Then
                        txt_note.Text = " "
                    End If
                    Dim str_sql As String = "Update tbl_cliente SET nome_cliente = '" & txt_nome.Text & "', indirizzo_cliente = '" & txt_indirizzo.Text & "' , cognome_cliente = '" & txt_cognome.Text & "' , note_cliente = '" & txt_note.Text & "', attivo_cliente = true, telefono_cliente = '" & txt_telefono.Text & "',email_cliiente = '" & txt_email.Text & "'  WHERE id_cliente = " & glb_int_id
                    sh_risultatoNonQuery = glb_nonQuery(str_sql)
                    If sh_risultatoNonQuery = 0 Then
                        MessageBox.Show("Modifica non riuscita")
                    End If
                    glb_chiudiConnessione()
                    caricaLista()
                End If
            End If
        End If
    End Sub
FORM TESSERA (richiamato):
codice:
    Sub apriFrm_tessere()
        If pr_frm_tessere Is Nothing Then
            pr_frm_tessere = New frm_tessera()
            Dim obj_cliente As New frm_cliente()
            pr_frm_tessere.MdiParent = obj_frm_index.MdiParent
        End If
        pr_frm_tessere.Show()
        pr_frm_tessere.Focus()
    End Sub
    Private Sub mnu_visualizzaTessera_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnu_visualizzaTessera.Click
        Call apriFrm_tessere()
    End Sub
MODULO GLOBALE:
codice:
MODULO GLOBALE:
Module Modulo_Globale
    ' Oggetti globali
    Public obj_frm_index As New frm_index()
    ' Variabili globali
    Public sh_risultatoNonQuery As Short
    Public glb_int_id As Integer
    Public glb_int_contatore As Integer
    Public glb_int_contatore2 As Integer
    Public glb_int_operazione  As Integer
'etc..
END MODULE
in debug mantiene il valore fino a me.close dopo diventa 0