Hei,
VBA:ssa listboxiin tulee oikeanlaisesti dataa kannasta tuotteen järjestysnumerolla. Samalla järjestysnumerolla tulee siis useiden päivien ajalta tuotteita listboxiin.
Mutta tarvitseisin vain sen viimeisimmällä päiväyksellä/kellonajalla olevan näkyviin. Osaisiko kukaan auttaa?
Moi kiepper!
tässä yksinkertainen VBA/DAO esimerkki...
'VBA-Projektiin referenssi: Microsoft DAO 3.6 Object Library
'UserForm1:
'1 ListBox (ListBox1)
'1 Tekstiruutu (TextBox1)
'1 Komentopainike (CommandButton1)
Private engine As DAO.DBEngine
Private db As DAO.Database
Private rs As DAO.Recordset
Private Sub UserForm_Activate()
    Static IsLoaded As Boolean
    If Not IsLoaded Then
        Set engine = New DBEngine
        On Error Resume Next
        Set db = engine.Workspaces(0).OpenDatabase("C:\Tietokanta1.mdb", _
        False, False, "MS Access;PWD=") 'esim.
        If Err <> 0 Then
           MsgBox Error$
           Err.Clear
           On Error Goto 0
           CommandButton1.Enabled = False
           Exit Sub
        End If
        IsLoaded = True
    End If
End Sub
Private Sub CommandButton1_Click()
    If TextBox1.Text = "" Then
        TextBox1.SetFocus
        Exit Sub
    End If
    On Error GoTo ErrorHandler
    Set rs = db.OpenRecordset("SELECT TUOTE, PVM FROM Taulu1 WHERE TUOTE='" & _
    TextBox1.Text & "' ORDER BY PVM ASC", dbOpenDynaset, dbOptimistic, dbReadOnly) 'esim.
    If rs.RecordCount > 0 Then
        'ListBox1.Clear
        rs.MoveLast
        ListBox1.AddItem rs!TUOTE & " " & rs!PVM
    End If
    rs.Close: Set rs = Nothing
    Exit Sub
ErrorHandler:
    MsgBox Error$
    Err.Clear
    On Error GoTo 0
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        On Error Resume Next
        db.Close: Set db = Nothing
        Set engine = Nothing
End Subja tässä yksinkertainen VBA/ADO esimerkki...
'VBA-Projektiin referenssi: Microsoft ActiveX Data Objects 2.8 Library  (msado15.dll)
'UserForm1:
'1 ListBox (ListBox1)
'1 Tekstiruutu (TextBox1)
'1 Komentopainike (CommandButton1)
Private cn As ADODB.Connection
Private rs As ADODB.Recordset
Private IsOpen As Boolean
Private Sub UserForm_Activate()
    If Not IsOpen Then
        Set cn = New ADODB.Connection
        On Error Resume Next
        cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Tietokanta1.mdb;"
        If Err <> 0 Then
            MsgBox Error$
            Err.Clear
            On Error GoTo 0
            CommandButton1.Enabled = False
        Else
            IsOpen = True
        End If
    End If
End Sub
Private Sub CommandButton1_Click()
    If TextBox1.Text = "" Then
        TextBox1.SetFocus
        Exit Sub
    End If
    Set rs = New ADODB.Recordset
    On Error Resume Next
    rs.Open "SELECT TUOTE, PVM FROM Taulu1 WHERE TUOTE='" & TextBox1.Text _
    & "' ORDER BY PVM ASC", cn, adOpenStatic, adLockOptimistic, -1 'esim.
    If Err <> 0 Then
        MsgBox Error$
        Err.Clear
        On Error GoTo 0
        Set rs = Nothing
        Exit Sub
    End If
    If rs.RecordCount > 0 Then
        'ListBox1.Clear
        rs.MoveLast
        ListBox1.AddItem rs!TUOTE & "  " & rs!PVM
    End If
    rs.Close: Set rs = Nothing
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    On Error Resume Next
    cn.Close: Set cn = Nothing
End SubAihe on jo aika vanha, joten et voi enää vastata siihen.