Страница: 1 |
Страница: 1 |
Вопрос: Поблемы с ADO контролом
Добавлено: 10.06.05 10:25
Автор вопроса:
-=J:M=- | Web-сайт:
Мож кто знает почему после выполнения 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-сайт:
Профиль | | #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-сайт:
Профиль | | #4
Добавлено: 12.06.05 19:53
Вот код открытия базы:
Dim openFile As String
Dim lastFile As String
On Error GoTo e_Trap
Call SaveDefaultTable
lastFile = GetSetting(App.Title, DEF_REGISTRY_CONNECTIONS & "\" & DEF_ACCESS, "atabase 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, "atabase Password", "", HKEY_LOCAL_MACHINE, "SOFTWARE\Database"
End If
Call SaveSetting(App.Title, DEF_REGISTRY_CONNECTIONS & "\" & DEF_ACCESS, "atabase Path", dbPath, HKEY_LOCAL_MACHINE, "SOFTWARE\Database"
dbConnectionString = "river={Microsoft Access Driver (*.mdb)}
bq=" & dbPath & "
efaultDir=" & 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 , после чего вылетает еррор, тот о катором я писал, Код:
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-сайт:
Профиль | | #5
Добавлено: 12.06.05 19:57
Упс, ето не коментарии то что зеленым, в Бейсике ето рабочий код! Просто ети символы коментарив там нужны как скобки, в прочем кому я обесняю...
Номер ответа: 6
Автор ответа: -=J:M=-
ICQ: 361471
Вопросов: 11
Ответов: 31
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #8
Добавлено: 17.06.05 11:59
Да, VB и ADO контрол. Дело в том что ето код из примера, я в нем сам не розбирался, поскольку в базах не силен, вот код зангрузки данных:
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-сайт:
Профиль | | #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-сайт:
Профиль | | #12
Добавлено: 20.06.05 11:47
adodata ето и есть ADO контрол, просто у него такое имя, у него же есть свойство Recordset! Я просто сразу кинул на форму 2 ADO контрола!