После выполнения команды DataGrid не редактируется! - VB

Узнай цену своей работы

Формулировка задачи:

Помогите, пожалуйста!
Выполняю запрос с параметрами к базе данных Northwind.mdb через объект Command. Вроде все нормально. но Datagrid не редактируется! Если обращаюсь к хранимой процедуре в SQL так же через объект Command - проблема та же, но если через rs.Open "имя_процедуры" "имя_пар1", "имя_пар2" - DATAGrid редактируемий.
Когда пытаюсь выполнить запрос с параметрами в Аccess через
rs.open "[sales by year] #1/1/95#, #12/1/95#" - думает, что это обычный запрос и дает ошибку. Как добиться, чтоб после выполнения запроса с параметрами DataGrid был все таки редактируемым???
Dim cn As New ADODB.Connection, com As new ADODB.Command
Dim prm2 As ADODB.Parameter, rs As ADODB.Recordset
Private Sub Form_Load()
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51; Data Source=E:\nwind.mdb"
cn.CursorLocation = adUseClient
cn.Open
rs.CursorType = adOpenDynamic
rs.ActiveConnection = cn
rs.LockType = adLockOptimistic
com.CommandType = adCmdUnknown
com.CommandText = "[Sales by year]"
com.ActiveConnection = cn
com.Parameters.Append com.CreateParameter("BeginningDate", adDate, adParamInput)
com.Parameters.Append com.CreateParameter("EndingDate", adDate, adParamInput)
com.Parameters(0).Value = "1/1/95"
com.Parameters(1).Value = "12/1/95"
Set rs = com.Execute()
Set DataGrid1.DataSource = rs
End Sub

Решение задачи: «После выполнения команды DataGrid не редактируется!»

textual
Листинг программы
<font color="00AA00">'Новому экземпляру устанавливаете свойства</font>
    rs.CursorType = adOpenDynamic
    rs.ActiveConnection = cn
    <font color="00AA00">'Вот то свойства, которое и контролирует в данном случае редактируемость</font>
    rs.LockType = adLockOptimistic
    
    ...    
    
    <font color="00AA00">' А тут тот экземпляр отправляете в мусор, заменяя его новым,</font>
    <font color="00AA00">' который возвращает Execute() as Recordset</font>
    <font color="00AA00">' ЕСТЕСТВЕННО, все те свойства <font color="teal">"сбросятся"</font></font>
    <font color="blue">Set</font> rs = com.Execute()

    <font color="00AA00">' rs.LockType = adLockOptimistic - Нужно сюда!</font>
    <font color="00AA00">'Но скажу более, он не даст так просто поменять, т.к. </font>
    <font color="00AA00">'это свойство нельзя менять пока рекордсет открыт</font>
    <font color="00AA00">'Нужно</font>
    rs.<font color="blue">close</font>
    rs.LockType = adLockOptimistic
    rs.<font color="blue">open</font>



    <font color="blue">Set</font> DataGrid1.DataSource = rs
    

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.444 из 5
Похожие ответы