Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 22.01.2015
Сообщений: 1

Recordset получает одну запись, хотя со де ржит несколько.

31.01.2007, 09:01. Показов 1576. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подключяюсь к БД Access через ADO
Посылаю запрос и получаю объект RecordSet
Этот Recordset Связываю с MsFlexGrid, но получаю
одну запись
Сам RecordSet содержит несколько
Может кто знает, в чем дело ПЛЗ сообщите
Если делать подключение через контрол ADOData, а потом подключать к MSFlexGrid, то выводит все записи
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2007, 09:01
Ответы с готовыми решениями:

DLookup, возвращает ли запрос хотя бы одну запись?
запрос: единственное поле: В условии выполнения макрокоманды пишу: DLookup(,) is null Мне нужно, чтобы макрокоманда...

Разбить одну запись на несколько по текстовому полю с перечислением нескольких значений
Просьба помочь со следующей проблемой. В одном определенном текстовом поле записей базы данных находится переменное количество (от 1 до...

Редактирование поля: Recordset.edit recordset.Fields('поле') = Text1.text Recordset.update
Есть Recordset базы mdb, некоторые поля в базе пустые. Т.е. Recordset.Fields ('поле') возвращает Null. Когда пытаюсь отредактировать запись...

5
asd
01.02.2007, 00:29
Вот пример, который использую я. Здесь открывается БД MS Access Parts.mdb и в ней таблица tblParts.
Проверь подключение Reference к Ms ActiveX Data Objects 2.x Library

Dim DbFile As String '' Имя БД
Dim cn as ADODB.Connection '' Соединение ADO Data Type
Dim rs as ADODB.Recordset '' Набор записей
Dim SQLstmt as String '' Запрос SQL

Private Sub Form_Load()

Open_cn
Call ShowFlexGrid

End Sub

Private Sub Open_cn ()

'' Открываем БД
DbFile = App.Path & 'Parts.mdb'

'' Устанавливаем соединение
Set cn= New ADODB.Connection
cn.CursorLocation = adUseClient
cn.ConnectionString = _
'Provider=Microsoft.Jet.OLEDB.4.0;' & _
'Data Source=' & DbFile & ';' & _
'Persist Security Info=False'

'' Открываем соединение
cn.Open

SQLstmt = 'SELECT * FROM [tblParts]'

'' Получаем записи
Set rs = New ADODB.Recordset
rs.Open SQLstmt, cn, adOpenStatic, adLockOptimistic, _
adCmdText

End Sub

Private Sub Close_cn ()

cn.Close
Set cn = Nothing

End Sub

Private Sub ShowFlexGrid()

Dim c as Integer
Dim flxgd_row as Integer
Dim field_wid as Integer

'' Настройки MSFlexGrid
MSFlexGrid1.Rows = 2
MSFlexGrid1.FixedRows = 1
MSFlexGrid1.FixedCols = 0

MSFlexGrid1.Rows = 1
MSFlexGrid1.Cols = rs.Fields.Count
ReDim col_wid(0 To rs.Fields.Count - 1)

For c = 0 to (rs.Fields.Count - 1)
MSFlexGrid1.TextMatrix(0, c) = rs.Fields(c).Name
col_wid(c) = TextWidth(rs.Fields(c).Name)
Next c

flxgd_row = 1

Do While Not rs.EOF
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1

For c = 0 To (rs.Fields.Count - 1)

MSFlexGrid1.TextMatrix(flxgd_row, c) = _
Format(rs.Fields(c).Value, '. ')

field_wid = TextWidth(rs.Fields(c).Value)
If col_wid(c) < field_wid Then col_wid(c) = field_wid

Next c

rs.MoveNext
flxgd_row = flxgd_row + 1
Loop

End Sub
Anri
01.02.2007, 05:00
А вообще-то я где-то у мелкомягких прочел типа: 'если хочешь что-бы жило все автоматически - используй MS DataGrid Control' . Не говорю что это и есть истинна, но точно так-же заполняю MSFlexGrid, как показанно выше.
0 / 0 / 0
Регистрация: 20.02.2007
Сообщений: 5
21.02.2007, 00:26
Если используется провайдер Jet.4.0, то я не удивлюсь. Сам я работаю с Jet.3.51 и у меня всё
заполняется, но в 4-том даже DataGrid не работает...
0
0 / 0 / 0
Регистрация: 11.02.2007
Сообщений: 5
24.02.2007, 22:15
Я прописаваю в ЭУ MSFlexGrid.datasource=имя объекта recordset и все само заполняется, как в jet.4.0 так и в более ранних версиях а так же с sqloledb. Только нужно поиграться с типами курсора и блокировками. По-моему нужен adStatic или adKeySet и блокировка adBatchOptimistic.

Теперича насчет DataGrid. Весьма недурственный ЭУ. Мне нравится гораздо больше чем Флексы.
Только и работать с ним сложнее немного. Мне не удалость заставить его работать с объектом recordset ADO в качестве DataSource.
Пришлось сделать свой ЭУ ActiveX и присобачить его как datasource к ЭУ DataGrid. ТОгда стало гораздо проще работать.

С уважением, Serge Pod. Airbase =KRoN= ( http://airbase.uka.ru )
0
0 / 0 / 0
Регистрация: 11.02.2007
Сообщений: 5
15.03.2007, 03:35
Нашел-таки способ работать с DataGrig только через объекты ADO.
Для того чтобы DataGrid воспринимал recordset как datasource нужно курсор рекордсета на сторону клиента. Тогда все ок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.03.2007, 03:35
Помогаю со студенческими работами здесь

Проблемы с кодом Recordset.AddNew() Recordset(0) = '01/02/2002' Recordset.Update()
Recordset.AddNew() Recordset(0) = '01/02/2002' Recordset.Update() //----------дает результат 1 февраля 2002 Recordset.AddNew() ...

Jion Recordset - сделать все записи в одну строку.
Добрый день. Есть Recordset, довольно таки большой около 1000 записей, надо все записи слепить в одну строку, т.е. есть код Do While...

Объединить несколько recordset в один
Добрый день. Выгружаю данные из двух файлов Excel (База1 и База2 с одинаковой структурой) в рекордсеты RS1, RS2. Пытаюсь объединить их...

роутер передает пакеты в одну сторону но не получает ответ от сервера
Люди спасайте ) Я с этим провайдером скоро поседею . Роутер работал в режиме точки доступа(wan порт не задействован) но это меня не...

Несколько результирующих наборов из курсора и RecordSet. Как?
Подскажите пожалуйста каким образом получить один набор данных если stoper_proc возвращает несколько результирующих наборов. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru