Mick_of_Goju Ответов: 1

Как мне получить цикл через мою таблицу access 97


Когда я нажимаю кнопку с включенной буквой, скажем M, я не могу прокрутить свою таблицу, чтобы получить результаты для отображения в виде списка. Я использую VB6 и Access 97

Что я уже пробовал:

Многочисленные часы поиска в интернете и различные способы кодирования, из предыдущих приложений, которые я сделал. Это мое первое использование строки подключения. Код кнопки выглядит следующим образом:
Private Sub cmd_SelectByLetter_Click(Index As Integer)
    Dim Kga_RS As Recordset
    Dim sql, myLetter As String
    Dim i As Long 'use long if the database has a huge amount of records; other wise use integer
    ' clear the listview
    lstv_AllKgaMembers.ListItems.Clear
    Set Kga_RS = New Recordset
'    Kga_RS.LockType = adLockOptimistic
'    Kga_RS.CursorType = adOpenKeyset
    myLetter = Chr(CLng(Index) + 65)
    sql = "SELECT * FROM [tbl_KGA_MEMBER_DETAILS] WHERE [F_Name] LIKE '" & myLetter _
        & "*' ORDER BY [F_Name] ASC"
    Kga_RS.Open sql, dbCon, , adLockOptimistic
    i = 0
    With lstv_AllKgaMembers
        Do Until Kga_RS.EOF
            FullName = Kga_RS!F_Name & " " & Kga_RS!L_Name
            ' "i" will be used to point to the row number for the items being added
            ' to the listview increment the i each time it loops past it
            i = i + 1
            ' now write the records from the recordset to the listview fields
            .ListItems.Add , , Kga_RS!KgaNo 'control id
            ' you can short cut this, but it is important not to do so check for blank fields,
            ' otherwise you'll get errors when there is a field that is blank (for example, if there is no address)
            If Not FullName = "" Then .ListItems(i).ListSubItems.Add , , FullName Else .ListItems(i).ListSubItems.Add , , ""
            Kga_RS.MoveNext
        Loop
    End With
    Kga_RS.Close
    cmd_SelectAllMembers.Enabled = True
    cmd_ClearAll.Visible = True
End Sub

Maciej Los

Непонятно! Пожалуйста, будьте более конкретны и предоставьте более подробную информацию о вашей проблеме.
Примечание: Я не вижу никакой строки подключения.

Mick_of_Goju

У меня есть форма с элементом управления Listview и несколькими кнопками. Одна кнопка при нажатии заполняет listview всеми членами из моей БД, то есть Membership No и Name no issues, когда эта кнопка нажата. У меня есть кнопки, которые индексируются, и кнопки имеют первую букву алфавита, которая является A.....Z Если я хочу перечислить членов с первым именем, начинающимся с M, я нажимаю кнопку M, но код не зацикливается, а идет от "With lstv_AllKgaMembers", затем "Do Until Kga_RS.EOF", а затем прямо до "End with", но не зацикливается через запись, чтобы отобразить все имена, начинающиеся с M. Также код для моего соединения есть.
dbFile = приложение.Путь & "\KgaDB.mdb"
Set dbCon = новое соединение
"для доступа ниже версии 2007 я использую Access’97
dbCon.Поставщик = "Майкрософт.Джет.Oledb для.4.0"
- dbCon.Provider = "Microsoft.ACE.OLEDB.12.0" 'эта строка также работает нормально
dbCon.Mode = adModeReadWrite
dbCon.Открыть (dbFile)
Я также отмечаю, что все мои другие формы, которые я использую, не имеют никаких проблем. Я благодарю вас за ваше время и надеюсь, что я предоставил достаточно информации для вас, чтобы помочь.

Richard Deeming

VB6 и Access 97 - язык, который был "мертв" более 15 лет, разговаривая с базой данных, которая была "мертва" в течение 18 лет.

Вы будете бороться, чтобы найти кого-то, кто все еще имеет любой из них работает, или может вспомнить достаточно о том, как они работают, чтобы помочь вам. :)

1 Ответов

Рейтинг:
1

CHill60

Предполагая, что это все еще проблема, вот несколько вещей, которые нужно попробовать

sql = "SELECT * FROM [tbl_KGA_MEMBER_DETAILS] WHERE [F_Name] LIKE '" & myLetter _
        & "%' ORDER BY [F_Name] ASC"
Примечание. использование конкатенации строк-это огромный риск внедрения sql, но я не помню, можно ли использовать параметризованные запросы с VB6 (и я не устанавливал его уже много лет).

Если бы Вы писали запрос в Access, вы бы использовали * для подстановочного знака, но с помощью OleDb я думаю, что вам нужно использовать sql-подобный " % " для подстановочного знака. Вы всегда можете удалить WHERE полностью, пока не отследите проблему.

Если это не сработает попробуйте поставить
Kga_RS.MoveFirst
перед петлей

Если это все еще не работает, то снова посмотрите на строку подключения. Попробуй
Set DBcON = New Connection
Dim strConn As String
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbFile & ";"
    conn.Open (strConn)

Наконец, вы не сказали, где приложение.Path is - если это (например) Program Files (x86), то любые данные, добавленные в базу данных, вероятно, будут находиться в папке users AppData, а не в приложении.Путь (предполагая, что вы используете версию Windows >= Vista) - попробуйте переместить базу данных в явную папку (например C:\temp например)