powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу заполнить DataGrid
6 сообщений из 6, страница 1 из 1
Не могу заполнить DataGrid
    #32015287
Фотография ulis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На VB делаю проект, который юзает SQL базу (VB6 sp4 + SQL2000 sp1). Есть форма, в которой отбирается критерий поиска в базе и затем итог отображается в DataGrid контроле, который связан с ADO-контролом(adcSearch). Если на сервер посылается запрос вот такого типа:

strSQL = "select ФамилияБольного, ИмяБольного, ОтчествоБольного, КодДиагноза from tblСтатистика where tblСтатистика.ФамилияБольного = 'Иванова'"

Set rstS.ActiveConnection = cnn
rstS.CursorType = adOpenKeyset
rstS.LockType = adLockBatchOptimistic
rstS.Open strSQL
Set adcSearch.Recordset = rstS ' где adcSearch - имя ADO контрола, связанного с DataGrid

то данные отображаются. Если запрос чуть изменить, добавив связь с другой таблицей:

strSQL = "SELECT ФамилияБольного, ИмяБольного, ОтчествоБольного, tblДиагноз.ДиагнозБольного as диагноз FROM tblСтатистика INNER JOIN tblДиагноз ON tblСтатистика.КодДиагноза = tblДиагноз.КодДиагноза
where tblСтатистика.ФамилияБольного = 'Иванова'

то DataGrid контрол данными не заполняется, хотя, если проверить возвращаемое содержимое в наборе, то данные там есть:

Do Until rstS.EOF
Debug.Print rstS![диагноз]
rstS.MoveNext
Loop

В чем может быть проблема?
...
Рейтинг: 0 / 0
Не могу заполнить DataGrid
    #32015288
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем контрол?
Просто открываешь рекордсет и присваиваешь его Datasource грида, правда если редактировать надо, то курсор должен быть клиентским и по моему тип блокировки должен быть adLockPessimistic
...
Рейтинг: 0 / 0
Не могу заполнить DataGrid
    #32015289
Фотография ulis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если присвоить свойству DataSourse грида открытый рекорсет, т.е.
dtgSearch.DataSource = rstS ' dtgSearch - имя грида
то вываливается ошибка "Method or data member not found"
...
Рейтинг: 0 / 0
Не могу заполнить DataGrid
    #32015297
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте явно задать CursorLocation = adUseClient. Сильно похоже что рткрывается серверный рекордсет. М в кчестве CursorType вполне достаточно Static.
...
Рейтинг: 0 / 0
Не могу заполнить DataGrid
    #32015306
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ulis

Ха ха я тоже на этом попался вначале, просто в синтаксисе нужно не ошибаться

Правильно нужно вот так:
set dtgSearch.DataSource = rstS ' dtgSearch - имя грида
...
Рейтинг: 0 / 0
Не могу заполнить DataGrid
    #32015363
Фотография ulis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Комбинация
rstS.CursorType = adOpenStatic
Set dtgSearch.DataSource = rstS
дали нужный результат
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не могу заполнить DataGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]