Страница: 1 | 2 |
Есть DataGrid, хочется самому добавлять информацию в этот компонент. Т.е. выполнили запрос Select code, index, name from am where id = 3 а затем полученные результаты добавить в таблицу(разумеется запрос формируетяс в процеес работы), причем если name = 3 должно добавлятьяс не 3, а например, "не подходит". Помотрел MSDN , а функции типа Add нет Спасибо.
Ты про .NET гришь? Нет VB6.0 Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "DSN=di" Set rs = cn.Execute("Select data, code, pole from zabTable where id = " & Text1.Text & " order by data") rs.Close cn.Close Set rs = Nothing Set cn = Nothing Полученную информацию из rs, надо отобразить в DataGrid в 3 столбца. Соответсвенно data, code - отображаются, а с полем pole посложнее.Возможнее значения 1 и 2. Если 1 должна быть надпись "динамическое", 2- "не динамическое" ну ежели к SQL Server'у коннектишся то мона так select ...,case pole when 1 then 'sdsdsd' when 2 then 'sdsds' end, .... from .... where .... ежели к Acces'у то мона через связанную табличку... типа сделать табличку с двумя записями... а потом на них связанный запрс напустить... Ну как вставлять данные в DataGrid. функция какая? Попробуй вот так: Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "DSN=di" Set rs = cn.Execute("Select data, code, pole from zabTable where id = " & Text1.Text & " order by data") Set DataGrid1.DataSource=rs Select Case rs.Fileds("pole").Value Case 1 DataGrid1.Columns("pole").Value="Динамическое" Case 2 DataGrid1.Columns("pole").Value="Не динамическое" End Select rs.Close cn.Close Set rs = Nothing Set cn = Nothing На стороке Set DataGrid1.DataSource = rs The rowset is not bookmarkable Потому что курсор серверный (это особенность работы с SQL-Server). По умолчанию VB выставляет расположение курсора на стороне сервера. Измени явно на клиентский: Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "DSN=di" Set rs = cn.Execute("Select data, code, pole from zabTable where id = " & Text1.Text & " order by data") rs.CursorLocation = adUseClient Set DataGrid1.DataSource=rs Select Case rs.Fileds("pole").Value Case 1 DataGrid1.Columns("pole").Value="Динамическое" Case 2 DataGrid1.Columns("pole").Value="Не динамическое" End Select rs.Close cn.Close Set rs = Nothing Set cn = Nothing rs.CursorLocation = adUseClient Операция не допускается если объект открыт Немного исправлю код: Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "DSN=di" With rs .ActiveConnection = cn .Open "SELECT data, code, pole FROM zabTable WHERE (((" & Text1.Text & ")=id)) ORDER BY data" End with Set DataGrid1.DataSource=rs Select Case rs.Fileds("pole").Value Case 1 DataGrid1.Columns("pole").Value="Динамическое" Case 2 DataGrid1.Columns("pole").Value="Не динамическое" End Select rs.Close cn.Close Set rs = Nothing Set cn = Nothing Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection cn.Open "dsn=di" Set rs = New ADODB.Recordset rs.CursorType = adOpenKeyset rs.LockType = adLockBatchOptimistic ' adLockBatchOptimistic rs.CursorLocation = adUseClient rs.Source = "Select data, code from zabTable where id = 3" ' & Text1.Text rs.ActiveConnection = cn rs.Open Set DataGrid1.DataSource = rs rs.Close cn.Close Set rs = Nothing Set cn = Nothing Работает , но ничего не отображает. Надо как то забивать поля. Хотелось бы прописывать название полей в коде. Так в чем проблема? Строку которую передаешь рекордсету мойно лепить как хочешь в переменной . Ничего от этого не изменится... Или я тебя не так понял? Так как писать?
Вопрос: работа с DataGrid
Добавлено: 16.09.02 10:18
Автор вопроса: dam
Ответы
Всего ответов: 21
Номер ответа: 1
Автор ответа:
Гибыч
Вопросов: 1
Ответов: 58
Профиль | | #1
Добавлено: 16.09.02 10:29
Номер ответа: 2
Автор ответа:
dam
Вопросов: 12
Ответов: 27
Профиль | | #2
Добавлено: 16.09.02 10:32
Номер ответа: 3
Автор ответа:
Alexis
Вопросов: 12
Ответов: 12
Профиль | | #3
Добавлено: 16.09.02 10:40
Функции Add у DataGrid действительно нет, потому что он может отображать данные не только из таблицы, но и на основе запроса, как в твоем случае. Для добавления записей используй SQL-оператор Insert, а затем обновляй свой рекордсет и DataGrid. Чтобы конкретней ответить напиши свой код.
Номер ответа: 4
Автор ответа:
dam
Вопросов: 12
Ответов: 27
Профиль | | #4
Добавлено: 16.09.02 12:13
Номер ответа: 5
Автор ответа:
Гибыч
Вопросов: 1
Ответов: 58
Профиль | | #5
Добавлено: 16.09.02 12:33
Номер ответа: 6
Автор ответа:
dam
Вопросов: 12
Ответов: 27
Профиль | | #6
Добавлено: 16.09.02 12:58
Номер ответа: 7
Автор ответа:
Alexis
Вопросов: 12
Ответов: 12
Профиль | | #7
Добавлено: 16.09.02 13:02
Номер ответа: 8
Автор ответа:
dam
Вопросов: 12
Ответов: 27
Профиль | | #8
Добавлено: 17.09.02 09:08
Номер ответа: 9
Автор ответа:
Alexis
Вопросов: 12
Ответов: 12
Профиль | | #9
Добавлено: 17.09.02 09:41
Номер ответа: 10
Автор ответа:
dam
Вопросов: 12
Ответов: 27
Профиль | | #10
Добавлено: 17.09.02 10:18
Номер ответа: 11
Автор ответа:
Alexis
Вопросов: 12
Ответов: 12
Профиль | | #11
Добавлено: 17.09.02 10:48
.LockType = adLockBatchOptimistic
.CursorLocation = adUseClient
Номер ответа: 12
Автор ответа:
dam
Вопросов: 12
Ответов: 27
Профиль | | #12
Добавлено: 17.09.02 14:03
Номер ответа: 13
Автор ответа:
dam
Вопросов: 12
Ответов: 27
Профиль | | #13
Добавлено: 17.09.02 14:13
Номер ответа: 14
Автор ответа:
MAGNUS
Вопросов: 12
Ответов: 430
Профиль | | #14
Добавлено: 17.09.02 14:47
Номер ответа: 15
Автор ответа:
dam
Вопросов: 12
Ответов: 27
Профиль | | #15
Добавлено: 17.09.02 14:57