Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: работа с DataGrid Добавлено: 16.09.02 10:18  

Автор вопроса:  dam

Есть DataGrid, хочется самому добавлять информацию в этот компонент.

Т.е. выполнили запрос Select code, index, name from am where id = 3

а затем полученные результаты добавить в таблицу(разумеется запрос формируетяс в процеес работы), причем если name = 3 должно добавлятьяс не 3, а например, "не подходит".

Помотрел MSDN , а функции типа Add нет

Спасибо.

Ответить

  Ответы Всего ответов: 21  

Номер ответа: 1
Автор ответа:
 Гибыч



Вопросов: 1
Ответов: 58
 Профиль | | #1 Добавлено: 16.09.02 10:29

Ты про .NET гришь?

Ответить

Номер ответа: 2
Автор ответа:
 dam



Вопросов: 12
Ответов: 27
 Профиль | | #2 Добавлено: 16.09.02 10:32

Нет VB6.0

Ответить

Номер ответа: 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

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- "не динамическое"

Ответить

Номер ответа: 5
Автор ответа:
 Гибыч



Вопросов: 1
Ответов: 58
 Профиль | | #5 Добавлено: 16.09.02 12:33

ну ежели к SQL Server'у коннектишся то мона так select ...,case pole when 1 then 'sdsdsd' when 2 then 'sdsds' end, .... from .... where ....

ежели к Acces'у то мона через связанную табличку... типа сделать табличку с двумя записями... а потом на них связанный запрс напустить...

Ответить

Номер ответа: 6
Автор ответа:
 dam



Вопросов: 12
Ответов: 27
 Профиль | | #6 Добавлено: 16.09.02 12:58

Ну как вставлять данные в DataGrid.

функция какая?

Ответить

Номер ответа: 7
Автор ответа:
 Alexis



Вопросов: 12
Ответов: 12
 Профиль | | #7 Добавлено: 16.09.02 13:02

Попробуй вот так:

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

Ответить

Номер ответа: 8
Автор ответа:
 dam



Вопросов: 12
Ответов: 27
 Профиль | | #8 Добавлено: 17.09.02 09:08

На стороке Set DataGrid1.DataSource = rs

The rowset is not bookmarkable

Ответить

Номер ответа: 9
Автор ответа:
 Alexis



Вопросов: 12
Ответов: 12
 Профиль | | #9 Добавлено: 17.09.02 09:41

Потому что курсор серверный (это особенность работы с 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

Ответить

Номер ответа: 10
Автор ответа:
 dam



Вопросов: 12
Ответов: 27
 Профиль | | #10 Добавлено: 17.09.02 10:18

rs.CursorLocation = adUseClient Операция не допускается если объект открыт

Ответить

Номер ответа: 11
Автор ответа:
 Alexis



Вопросов: 12
Ответов: 12
 Профиль | | #11 Добавлено: 17.09.02 10:48

Немного исправлю код:

Dim cn As ADODB.Connection

Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection

cn.Open "DSN=di"

With rs

    .ActiveConnection = cn
    .LockType = adLockBatchOptimistic
    .CursorLocation = adUseClient

    .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

Ответить

Номер ответа: 12
Автор ответа:
 dam



Вопросов: 12
Ответов: 27
 Профиль | | #12 Добавлено: 17.09.02 14:03

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

Работает , но ничего не отображает.

Надо как то забивать поля.

Ответить

Номер ответа: 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

Так как писать?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам