Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Поблемы с ADO контролом Добавлено: 10.06.05 10:25  

Автор вопроса:  -=J:M=- | Web-сайт: www.soft4free.net | ICQ: 361471 
Мож кто знает почему после выполнения SQL запроса типа INSERT или UPDATE ADO ыдает ошыбку, типа "запись не может быть сделана, потому что обект закрит" ? Как такого избежать? Мож я не правельно открываю базу...
Спасибо...

Ответить

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

Номер ответа: 1
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #1 Добавлено: 10.06.05 13:27
Может ты её вообще не открываешь? :)
Или работаешь не с таблицей а с представлением.

Ответить

Номер ответа: 2
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #2
Добавлено: 11.06.05 12:13
Что значит "с представлением"?? Вреде все нормально, открываю базу там КонекшенСтринг.. и т.п. Я просто первый раз с базами работаю, мож действительно что то не так! подскажыте если кто знает..
Спасибо.

Ответить

Номер ответа: 3
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 11.06.05 18:57
давай код, будем разбирать.

Ответить

Номер ответа: 4
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #4
Добавлено: 12.06.05 19:53
Вот код открытия базы:
Private Sub mnuOpenAccess_Click()
Dim openFile As String
Dim lastFile As String
    On Error GoTo e_Trap
    Call SaveDefaultTable
    
    lastFile = GetSetting(App.Title, DEF_REGISTRY_CONNECTIONS & "\" & DEF_ACCESS, ";Database Path", "", HKEY_LOCAL_MACHINE, "SOFTWARE\Database";)
    openFile = SelectFile("Select Database", "Microsoft Access Database (*.mdb)" & Chr$(0) & "*.mdb", &H4 + &H1000, "mdb", False, lastFile)
    If openFile <> "" Then
        LastOpenedType = e_LastOpened_Access
        dbPath = openFile
        dbType = e_databaseTypes_AccessFile
        If lastFile <> openFile Then
            Call SaveSetting(App.Title, DEF_REGISTRY_CONNECTIONS & "\" & DEF_ACCESS, ";Database Password", "", HKEY_LOCAL_MACHINE, "SOFTWARE\Database";)
        End If
        Call SaveSetting(App.Title, DEF_REGISTRY_CONNECTIONS & "\" & DEF_ACCESS, ";Database Path", dbPath, HKEY_LOCAL_MACHINE, "SOFTWARE\Database";)
        dbConnectionString = ";Driver={Microsoft Access Driver (*.mdb)};Dbq=" & dbPath & ";DefaultDir=" & DetermineDirectory(dbPath) & ";"
        Call SetupDatabase
    End If
    Exit Sub
e_Trap:
    Call MessageBox(Me.hwnd, "Error:" & Err.Description & " (" & Err.Number & ";)", vbOKOnly + vbCritical, "Error";)
End Sub


А вот код кнопки, в котором исполняется SQL запрос INSERT , после чего вылетает еррор, тот о катором я писал, Код:
Private Sub addK_Click()
Dim nazv As String
Dim cin As String
Dim kil As String
Dim raz As String
If kilkb.Text - kilk.Text = 0 Then Call zamov
zag = zag + cinal.caption
nazv = nazval.caption
cin = cina.Text
kil = kilk.Text
raz = cinal.caption
On Error GoTo 10
Call chbaza
adodata2.RecordSource = "insert into temp (Назва, Ціна, Кількість, Разом) values ('" & nazv & "','" & cin & "','" & kil & "','" & raz & "')"
adodata2.Refresh
10: Call LoadData
serch.Text = ""
zagl.caption = ""
zagl.caption = "Сума до оплати становить: " & zag & " грн."
kilk.Text = "1"
End Sub


Извинете что не поубирал лишнее, времени небыло, буду очень презнателен, если кто поможет, спасибо.

Ответить

Номер ответа: 5
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #5
Добавлено: 12.06.05 19:57
Упс, ето не коментарии то что зеленым, в Бейсике ето рабочий код! Просто ети символы коментарив там нужны как скобки, в прочем кому я обесняю... :)

Ответить

Номер ответа: 6
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #6
Добавлено: 17.06.05 10:14
Ну так что? Кто то розобрался в етом коде? Можете что то сказать?

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #7 Добавлено: 17.06.05 11:01
Че-то я похоже вообще не догоняю. Где тут открытие базы то? Ты в чем пишешь? В VB с Microsoft ActiveX Data Object? Приведи код открытия базы.

Ответить

Номер ответа: 8
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #8
Добавлено: 17.06.05 11:59
Да, VB и ADO контрол. Дело в том что ето код из примера, я в нем сам не розбирался, поскольку в базах не силен, вот код зангрузки данных:
 


Public Sub LoadData()
    
    On Error GoTo e_Trap
    Call chkEditMode_Click
    If cmbTables.Text = DEF_CUSTOM_SQL Then
        mnuShowSQL.Checked = True
        On Error Resume Next
        Exit Sub
    End If
    If cmbTables.Text <> "Медикаменти" Then
    selit.Visible = False
    dg.Visible = False
    go.Visible = False
    Else
    selit.Visible = True
    dg.Visible = True
    go.Visible = True
   End If
    
    LockTextBox = True
    If cmbTables.Text = "" Then Exit Sub
    imgLoading.Visible = True
    Me.Refresh
    SortOrder = True
    LastColumnSort = 0
    Set gridData.DataSource = Nothing
    adoData.RecordSource = ""
    adoData.ConnectionString = ""
    adoData.ConnectionString = dbConnectionString
    adoData.RecordSource = "SELECT * FROM " & ResolveTable(cmbTables.Text)
    adoData.Refresh
    
    adodata2.RecordSource = ""
    adodata2.ConnectionString = ""
    adodata2.ConnectionString = dbConnectionString
    adodata2.RecordSource = "Select * From temp"
    adodata2.Refresh
        
    Dim nCount As Integer
    c1.Clear
For nCount = 1 To adoData.Recordset.Fields.Count
             c1.AddItem adoData.Recordset.Fields(nCount - 1).Name
   Next nCount
    c1.Text = c1.List(0)
    
    If adoData.Recordset.Fields.Count = 0 Then
        gridData.ClearFields
    Else
        Set gridData.DataSource = adoData.Recordset
        gridData.ClearFields
        gridData.ReBind
    End If
    lblStatus.caption = "Кількість записів: " & adoData.Recordset.RecordCount
    imgLoading.Visible = False
    LockTextBox = False
    If cmbTables.Text = "Медикаменти" Then
    Call pole
    End If
    Exit Sub
    
    
e_Trap:
    lblStatus.caption = "Помилка: " & Err.Description & " (" & Err.Number & ";)"
    imgLoading.Visible = False
    LockTextBox = False
  
End Sub


А открывается она вроде в придедущем куске кода...

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #9 Добавлено: 17.06.05 12:21
Не, ну Open то где?
Попробуй чтоль в этом фрагменте так

    adodata2.RecordSource = ""
    adodata2.ConnectionString = ""
    adodata2.ConnectionString = dbConnectionString
    adodata2.RecordSource = "Select * From temp"
    adodata2.Open , , adOpenDynamic, adLockOptimistic
    adodata2.Refresh

Ответить

Номер ответа: 10
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #10
Добавлено: 18.06.05 16:33
хм, Бейсик выдает ошыбку, пишет что такого метода "Open" нет...

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #11 Добавлено: 20.06.05 10:29
хм... Разве у тебя adodata объявлен не как ADOшный Recordset?

Ответить

Номер ответа: 12
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #12
Добавлено: 20.06.05 11:47
adodata ето и есть ADO контрол, просто у него такое имя, у него же есть свойство Recordset! Я просто сразу кинул на форму 2 ADO контрола!

Ответить

Страница: 1 |

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



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