Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2012, 11:39   #1
callbitz
Пользователь
 
Регистрация: 16.02.2012
Сообщений: 18
По умолчанию не работает recordset

не получается вывести запрос в листбокс с помощью рекордсет.
Есть листбокс zzz. Есть таблица tb c полями id, a, b. В свойствах листбокса стоит вывод по значению.
Код:
Private Sub zzz_BeforeUpdate(Cancel As Integer)
Dim s As String
Dim baza As Database
Dim rec As Recordset
    s = "select * from tb"
    'Set baza = OpenDatabase("C:\z\dbtests.mdb")
    Set baza = CurrentDb
    Set rec = baza.OpenRecordset(s)
            
        Do Until Not rec.EOF
            Me.zzz.AddItem rec.Fields("b")
            rec.MoveNext
        Loop
End Sub

Последний раз редактировалось callbitz; 16.02.2012 в 11:51.
callbitz вне форума Ответить с цитированием
Старый 16.02.2012, 12:12   #2
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Попробуйте вместо "select * from tb" вывести все поля - я думаю тогда будет нормально
gluk_fm вне форума Ответить с цитированием
Старый 16.02.2012, 12:16   #3
callbitz
Пользователь
 
Регистрация: 16.02.2012
Сообщений: 18
По умолчанию

Цитата:
Попробуйте вместо "select * from tb" вывести все поля - я думаю тогда будет нормально
не совсем понял...
callbitz вне форума Ответить с цитированием
Старый 16.02.2012, 12:47   #4
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Выложите лучше пример, тогда будет понятней. А так я предлагаю Вам в запросе на выборку который Вы вставляете в рекордсет вывести все поля по отдельности, что позваолит потом посмотреть правильно ли перебираются значения написав:
p = rec![name pole]
И если значение будет то смотреть где ошибка, а если нет - то проблема в самом запросе на выборку.
gluk_fm вне форума Ответить с цитированием
Старый 16.02.2012, 14:03   #5
callbitz
Пользователь
 
Регистрация: 16.02.2012
Сообщений: 18
По умолчанию

Цитата:
вывести все поля по отдельности
так "select a from tb"
Код:
Private Sub zzz_BeforeUpdate(Cancel As Integer)
Dim s As String
Dim baza As Database
Dim rec As Recordset
    s = "select a from tb"   'Так?
    'Set baza = OpenDatabase("C:\z\dbtests.mdb")
    Set baza = CurrentDb
    Set rec = baza.OpenRecordset(s)
            
        Do Until Not rec.EOF
            Me.zzz.AddItem rec.Fields("a")
            rec.MoveNext
        Loop
End Sub
Цитата:
Выложите лучше пример, тогда будет понятней.
Так это и есть пример, я с рекордсет хочу разобраться. Есть таблица с 3мя столбцами и этот код... и всё :-)

Последний раз редактировалось callbitz; 16.02.2012 в 14:05.
callbitz вне форума Ответить с цитированием
Старый 16.02.2012, 15:37   #6
callbitz
Пользователь
 
Регистрация: 16.02.2012
Сообщений: 18
По умолчанию

елки палки. Я от этого рекордсета чесаться начал! Почему он не работает?
callbitz вне форума Ответить с цитированием
Старый 16.02.2012, 15:49   #7
callbitz
Пользователь
 
Регистрация: 16.02.2012
Сообщений: 18
По умолчанию

Я нашел причину! Нужно было это код не в листбокс, а в кнопку писать!
Private Sub Butt_Click()
Код:
Private Sub Butt_Click()
Dim s As String
Dim baza As Database
Dim rec As Recordset
    's = "select * from tb"
    'Set baza = OpenDatabase("C:\z\dbtests.mdb")
    
    Set baza = CurrentDb
    Set rec = baza.OpenRecordset("select * from tb")
    
    'Set Me.zzz.Recordset = rec
        Do While Not rec.EOF
            Me.zzz.AddItem rec.Fields("a")
            rec.MoveNext
        Loop
    
End Sub
Возникает у меня вопрос! Как сделать так, чтобы в листбоксе данные выводились сразу после запуска формы, а не после нажатия кнопки?
callbitz вне форума Ответить с цитированием
Старый 16.02.2012, 15:53   #8
callbitz
Пользователь
 
Регистрация: 16.02.2012
Сообщений: 18
По умолчанию

Дошло! Нужно запихнуть всё в процедуру Load_Form !
callbitz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных из recordset Sergey112233 Microsoft Office Excel 5 04.10.2011 18:45
SQL, Recordset в Excel Sanek_81 Microsoft Office Excel 11 16.04.2011 20:31
Сортировка Recordset Woodlin Microsoft Office Access 2 31.03.2011 07:51
Update Recordset Kveldulv Microsoft Office Excel 0 13.05.2010 16:42
Тип переменной Recordset Insightful Microsoft Office Access 6 23.04.2010 15:10