Dunque
1) ho creato una maschera con delle textbox che mi mostrano i campi dei record del mio database.
2) ho inserito una textbox per filtrare i record
3) ho scritto questo codice che funziona alla grande
Public Sub TextBoxFiltra_Change()
Dim vConnessione As New Connection
Dim vRisultato As Result
With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With
vConnessione.Open()
vRisultato = vConnessione.Exec("SELECT * FROM Clienti WHERE Cliente LIKE '%" & TextBoxFiltra.Text & "%'")
If vRisultato.Available Then
TextBoxId.Text = vRisultato!id_Clienti
TextBox1.Text = vRisultato!Cliente
TextBox2.Text = vRisultato!Ragione_Sociale
Else
vRisultato = vConnessione.Exec("SELECT * FROM Clienti WHERE Ragione_Sociale LIKE '%" & TextBoxFiltra.Text & "%'")
If vRisultato.Available Then
TextBoxId.Text = vRisultato!id_Clienti
TextBox1.Text = vRisultato!Cliente
TextBox2.Text = vRisultato!Ragione_Sociale
End If
End If
sql = vRisultato
vConnessione.Close()
End
4) ho una Public sql As Result alla quale, prima di chiudere la connessione assegno il risultato del filtro sql=vRisultato
Parte non funzionante:
5) ho inserito i pulsanti di spostamento ai quali al click ho assegnato sql.MoveFirst e sql.MoveLast
:hard: i record non cambiano... sono fuori strada ?
La mia soluzione funzionante:
NOTE: post modificato il 15 gennaio 2017 con codice perfezionato per tutti gli spostamenti
NOTE: post modificato il 18 gennaio 2017 con codice ulteriormente perfezionato e ridotto nel numero di righe
Variabili pubbliche:
Public vConnessione As New Connection
Public vRisultato As Result
Public vRecord As Integer
Apertura del form:
Public Sub Form_Open()
With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With
vConnessione.Open()
vRisultato = vConnessione.Exec("Select * From 'Clienti'")
If vRisultato.Available = True Then
TextBoxId.Text = vRisultato!id_Clienti
TextBox1.Text = vRisultato!Cliente
TextBox2.Text = vRisultato!Ragione_Sociale
End If
vConnessione.Close()
End
Filtro:
Public Sub TextBoxNomeFiltra_Change()
With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With
vConnessione.Open()
vRisultato = vConnessione.Exec("SELECT * FROM Clienti WHERE Cliente LIKE '%" & TextBoxNomeFiltra.Text & "%'")
If vRisultato.Available = True Then
TextBoxId.Text = vRisultato!id_Clienti
TextBox1.Text = vRisultato!Cliente
TextBox2.Text = vRisultato!Ragione_Sociale
End If
vConnessione.Close()
End
Spostamento tra i record:
Primo record:
Public Sub ButtonPrimo_Click()
With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With
vConnessione.Open()
If vRisultato.Available Then
vRisultato.MoveFirst
Dec vRecord
If vRisultato.Available Then
TextBoxId.Text = vRisultato!id_Clienti
TextBox1.Text = vRisultato!Cliente
TextBox2.Text = vRisultato!Ragione_Sociale
Else
vRisultato.MoveFirst
vRecord = vRisultato!id_Clienti
Endif
Endif
vConnessione.Close()
End
Record precedente:
Public Sub ButtonPrecedente_Click()
With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With
vConnessione.Open()
If vRisultato.Available Then
vRisultato.MovePrevious
Dec vRecord
If vRisultato.Available Then
TextBoxId.Text = vRisultato!id_Clienti
TextBox1.Text = vRisultato!Cliente
TextBox2.Text = vRisultato!Ragione_Sociale
Else
vRisultato.MoveFirst
vRecord = vRisultato!id_Clienti
Endif
Endif
vConnessione.Close()
End
Record successivo:
Public Sub ButtonSuccessivo_Click()
With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With
vConnessione.Open()
If vRisultato.Available Then
vRisultato.MoveNext
Inc vRecord
If vRisultato.Available Then
TextBoxId.Text = vRisultato!id_Clienti
TextBox1.Text = vRisultato!Cliente
TextBox2.Text = vRisultato!Ragione_Sociale
Else
vRisultato.MoveLast
vRecord = vRisultato!id_Clienti
Endif
Endif
vConnessione.Close()
End
Ultimo record:
Public Sub ButtonUltimo_Click()
With vConnessione
.Type = "sqlite3"
.Name = "Report_DB.sqlite"
.Host = User.Home &/ "MyReport/"
.Login = ""
.Password = ""
End With
vConnessione.Open()
If vRisultato.Available Then
vRisultato.MoveLast
Inc vRecord
If vRisultato.Available Then
TextBoxId.Text = vRisultato!id_Clienti
TextBox1.Text = vRisultato!Cliente
TextBox2.Text = vRisultato!Ragione_Sociale
Else
vRisultato.MoveLast
vRecord = vRisultato!id_Clienti
Endif
Endif
vConnessione.Close()
End