Controlli - Muovere Record Da Una ScrollBar




Scroll # Vedi TelefoniTAB
Option Explicit
Dim i As Integer
Dim Valore As Long
Const mnCTLARRAYHEIGHT = 340
Dim mnFieldTop As Integer
Private Sub Command1_Click()
STRINGA = InputBox("Inserisci il nominativo da ricercare", "Ricerca", , 3500, 3500)
If STRINGA <> "" Then
If Inail = False Then

Data1.RecordSource = "SELECT * FROM TELEFONI WHERE [nOMINATIVO] LIKE " & Chr(34) & Mid(STRINGA, 1, 1) & "*" & Chr(34) & " order by [Nominativo];"
Else

Data1.RecordSource = "SELECT * FROM inail WHERE [nOMINATIVO] LIKE " & Chr(34) & Mid(STRINGA, 1, 1) & "*" & Chr(34) & " order by [Nominativo];"
End If

Data1.Refresh
Criterio = "trim(ucase([nominativo])) >= trim(" & Chr(34) & UCase(STRINGA) & Chr(34) & ")"
Data1.Recordset.FindFirst Criterio
Debug.Print Data1.Recordset.NoMatch
Me.Refresh
End If
End Sub

Private Sub Data1_Reposition()
Text1.Text = "Record: " & (Data1.Recordset.AbsolutePosition + 1) & _
"/" & Data1.Recordset.RecordCount
'Visualizza la posizione del record corrente per dynaset e snapshot

End Sub

Private Sub DBGrid1_DblClick()
Dim Criterio As String
If Not Data1.Recordset.EOF Then
Criterio = "[id] = " & Data1.Recordset.Fields("ID")
frmTelefoni.Show
frmTelefoni.datPrimaryRS.Recordset.FindFirst Criterio
frmTelefoni.datPrimaryRS.Recordset.Edit
Else
frmTelefoni.Show
frmTelefoni.datPrimaryRS.Recordset.AddNew
End If
End Sub

Private Sub DBGrid2_DblClick()
Dim Criterio As String
If Not Data1.Recordset.EOF Then
Criterio = "[id] = " & Data1.Recordset.Fields("ID")
frmTelefoni.Show
frmTelefoni.datPrimaryRS.Recordset.FindFirst Criterio
frmTelefoni.datPrimaryRS.Recordset.Edit
Else
frmTelefoni.Show
frmTelefoni.datPrimaryRS.Recordset.AddNew
End If
End Sub

Private Sub DBGrid3_DblClick()
Dim Criterio As String
Load frmINAIL
If Not Data1.Recordset.EOF Then
Criterio = "[id] = " & Data1.Recordset.Fields("ID")
frmINAIL.datPrimaryRS.Recordset.FindFirst Criterio
frmINAIL.datPrimaryRS.Recordset.Edit
Else
frmINAIL.datPrimaryRS.Recordset.AddNew
End If
frmINAIL.Show 1
Data1.Refresh
End Sub

Private Sub DBGrid4_DblClick()
Dim Criterio As String
Load frmINAIL
If Not Data1.Recordset.EOF Then
Criterio = "[id] = " & Data1.Recordset.Fields("ID")
frmINAIL.datPrimaryRS.Recordset.FindFirst Criterio
frmINAIL.datPrimaryRS.Recordset.Edit
Else
frmINAIL.datPrimaryRS.Recordset.AddNew
End If
frmINAIL.Show 1
Data1.Refresh
End Sub

Private Sub Form_Resize()
'Tab3.Visible = False

'Tab4.Visible = False

'Calendar1.Visible = False

ChDir App.Path
SchermoBLU
Inail = False
Tab1.Value = 1
Tab1.SetFocus
Tab1_AfterUpdate
DBGrid1.Visible = True
DBGrid2.Visible = True
DBGrid3.Visible = False
DBGrid4.Visible = False

VScroll1.Max = Data1.Recordset.RecordCount ' Imposta il valore massimo.
VScroll1.LargeChange = 18 ' Spostamento completo in 5 clic.
VScroll1.SmallChange = 5 ' Spostamento completo in 20 clic.

'DBGrid2.Splits.Add 0

'DBGrid2.Splits.Add 1

End Sub

Private Sub Form_Unload(Cancel As Integer)
End
End Sub

Private Sub Tab1_AfterUpdate()
ChDir App.Path
Dim objTabs As Object
Dim stLike As String
If Inail = False Then

If (Tab1.Value = 0) Then
Data1.RecordSource = "SELECT * FROM tELEFONI order by [Nominativo]"
Data1.Refresh
VScroll1.Max = Data1.Recordset.RecordCount ' Imposta il valore massimo.
VScroll1.Value = 0 ' RIPORTA A ZERO IL VALORE E QUINDI IL BOTTONE SALE IN ALTO
Else
stLike = "'" & Chr$(64 + Tab1.Value) & "*'"
Data1.RecordSource = "SELECT * FROM TELEFONI WHERE [nOMINATIVO] LIKE " & stLike & " order by [Nominativo] ;"
Data1.Refresh
VScroll1.Max = Data1.Recordset.RecordCount ' Imposta il valore massimo.
VScroll1.Value = 0 ' RIPORTA A ZERO IL VALORE E QUINDI IL BOTTONE SALE IN ALTO
End If
Else
If (Tab1.Value = 0) Then
Data1.RecordSource = "SELECT * FROM Inail order by [Nominativo]"
Data1.Refresh
VScroll1.Max = Data1.Recordset.RecordCount ' Imposta il valore massimo.
VScroll1.Value = 0 ' RIPORTA A ZERO IL VALORE E QUINDI IL BOTTONE SALE IN ALTO
Else
stLike = "'" & Chr$(64 + Tab1.Value) & "*'"
Data1.RecordSource = "SELECT * FROM Inail WHERE [nOMINATIVO] LIKE " & stLike & " order by [Nominativo] ;"
Data1.Refresh
VScroll1.Max = Data1.Recordset.RecordCount ' Imposta il valore massimo.
VScroll1.Value = 0 ' RIPORTA A ZERO IL VALORE E QUINDI IL BOTTONE SALE IN ALTO
End If

End If

End Sub

Private Sub Tab2_AfterUpdate()
Dim objTabs As Object
Dim stLike As String
On Error Resume Next

If Tab2.Value = 15 Then
End
End If

If Tab2.Value = 13 Then
Data1.RecordSource = "Select * Form [INAIL] order by [Nominativo]"
Data1.Refresh
VScroll1.Max = Data1.Recordset.RecordCount ' Imposta il valore massimo.
VScroll1.Value = 0 ' RIPORTA A ZERO IL VALORE E QUINDI IL BOTTONE SALE IN ALTO
DBGrid1.Visible = False
DBGrid2.Visible = False
DBGrid3.Visible = True
DBGrid4.Visible = True
DBGrid3.Refresh
DBGrid4.Refresh
Inail = True
Tab1.Value = 1
Tab1.SetFocus
Tab1_AfterUpdate
Exit Sub

ElseIf Tab2.Value = 14 Then
Data1.RecordSource = "Select * Form [Telefoni] order by [Nominativo]"
Data1.Refresh
VScroll1.Max = Data1.Recordset.RecordCount ' Imposta il valore massimo.
VScroll1.Value = 0 ' RIPORTA A ZERO IL VALORE E QUINDI IL BOTTONE SALE IN ALTO
DBGrid1.Visible = True
DBGrid2.Visible = True
DBGrid1.Refresh
DBGrid2.Refresh
DBGrid3.Visible = False
DBGrid4.Visible = False
Inail = False
Tab1.Value = 1
Tab1.SetFocus
Tab1_AfterUpdate
VScroll1.Refresh
Exit Sub
Else
If Inail = False Then
stLike = "'" & Chr$(64 + 14 + Tab2.Value) & "*'"
Data1.RecordSource = "SELECT * FROM TELEFONI WHERE [nOMINATIVO] LIKE " & stLike & " order by [Nominativo];"
Data1.Refresh
VScroll1.Max = Data1.Recordset.RecordCount
VScroll1.Value = 0 ' RIPORTA A ZERO IL VALORE E QUINDI IL BOTTONE SALE IN ALTO
VScroll1.Refresh
Else
stLike = "'" & Chr$(64 + 14 + Tab2.Value) & "*'"
Data1.RecordSource = "SELECT * FROM inail WHERE [nOMINATIVO] LIKE " & stLike & " order by [Nominativo];"
Data1.Refresh
VScroll1.Max = Data1.Recordset.RecordCount
VScroll1.Value = 0 ' RIPORTA A ZERO IL VALORE E QUINDI IL BOTTONE SALE IN ALTO
VScroll1.Refresh
End If
End If
End Sub

Private Sub VScroll1_Change() ' clicca sull'area della barra
On Error Resume Next ' e non sul bottone della barra
Dim nCurrVal As Integer
nCurrVal = VScroll1
If (nCurrVal - Valore) > 0 Then
For i = 1 To (nCurrVal - Valore) '18
If Not Data1.Recordset.EOF Then
Data1.Recordset.MoveNext
End If
Next
Else
For i = 1 To (Valore - nCurrVal) ' 18 '
If Not Data1.Recordset.BOF Then
Data1.Recordset.MovePrevious
End If
Next
End If
Valore = VScroll1.Value
End Sub

Private Sub VScroll1_Scroll()
On Error Resume Next
Dim nCurrVal, quanto As Integer
nCurrVal = VScroll1
If (nCurrVal - Valore) > 0 Then
quanto = (nCurrVal - Valore)
Else
quanto = (Valore - nCurrVal)
End If
If (nCurrVal - Valore) < 0 Then
For i = 1 To quanto
If Not Data1.Recordset.BOF Then
Data1.Recordset.MovePrevious
Else
Valore = 1
End If
Next

Else
For i = 1 To quanto
If Not Data1.Recordset.EOF Then
Data1.Recordset.MoveNext
Else
Valore = Data1.Recordset.RecordCount
End If
Next
End If
Valore = VScroll1.Value
End Sub











( controllimuovererecorddaunascrollbar.html )- by Paolo Puglisi - Modifica del 17/12/2023