powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите с ошибкой в программе VB
18 сообщений из 18, страница 1 из 1
Помогите с ошибкой в программе VB
    #37796595
19Sky89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Ребята, написал программу, появляется ошибка компиляции: Procedure declaration does not match description of event or procedure having the same name.
Пожалуйста подскажите в чем ошибка, вот текст программы:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
Option Explicit

Private Sub ado_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
If pRecordset.BOF Or pRecordset.EOF Then
cmdDelete.Enabled = False
cmdEdit.Enabled = False
Else
cmdDelete.Enabled = True
cmdEdit.Enabled = True
End If
End Sub

Private Sub cmdAdd_Click()
ado.Recordset.AddNew

Set frmAccounting.ado = ado
frmAccounting.Caption = "Добавление оборудования"
frmAccounting.Show vbModal, frmMain
End Sub

Private Sub cmdEdit_Click()
If ado.Recordset.BOF Or ado.Recordset.EOF Then Exit Sub

Set frmAccounting.ado = ado
frmAccounting.Caption = "Изменение оборудования"
frmAccounting.Show vbModal, frmMain
End Sub

Private Sub cmdDelete_Click()
If ado.Recordset.BOF Or ado.Recordset.EOF Then Exit Sub

If MsgBox("Вы действительно хотите удалить запись?", vbInformation Or vbYesNo) = vbYes Then
ado.Recordset.Delete adAffectCurrent
ado.Recordset.MoveNext
End If
End Sub

Private Sub cmdFind_Click()
Dim Field As Field, Criteria As String
If cmbFindField.ListIndex > -1 Then
Set Field = ado.Recordset(cmbFindField.ListIndex)
If Field.Type = adVarWChar Then
Criteria = Field.Name & " LIKE '*" & txtFind.Text & "*'"
ElseIf Field.Type = adDate And IsDate(txtFind.Text) Then
Criteria = Field.Name & " = #" & Format(CDate(txtFind.Text), "mm/dd/yyyy") & "#"
ElseIf Field.Type = adInteger And IsNumeric(txtFind.Text) Then
Criteria = Field.Name & " = " & txtFind.Text
Else
Exit Sub
End If
ado.Recordset.Find Criteria, , adSearchForward, adBookmarkFirst
End If
End Sub

Private Sub Form_Load()
ado.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db.mdb;Persist Security Info=False"
ado.RecordSource = "Accounting"
ado.Refresh
cmbFindField.ListIndex = 0
End Sub

Private Sub Form_Resize()
DataGrid1.Width = Me.ScaleWidth - DataGrid1.Left - 8
DataGrid1.Height = Me.ScaleHeight - DataGrid1.Top - 8
End Sub




Ошибка появляется на строке Private Sub ado_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset).

Заранее спасибо!
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796618
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как именно объявлен объект ado?
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796627
19Sky89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, извините, немного не понял ваш вопрос, дело в том, что я в VB новичок и программу мне помогали делать.
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796642
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Private Sub ado_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)

On Error GoTo err_debug

If pRecordset.BOF Or pRecordset.EOF Then
cmdDelete.Enabled = False
cmdEdit.Enabled = False
Else
cmdDelete.Enabled = True
cmdEdit.Enabled = True
End If

lb_out:
Exit sub
err_debug:
	Msgbox Err.Number & ": " & Err.Description
	resume lb_out

End Sub




ошибку в студию
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796652
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну те кто помог делать, пусть объяснит.
Дело в том, что событие MoveComplete есть только у ADODB.RecordSet. Но у него нет свойства RecordSet и т.п., которое вы пытаетесь использовать, подозреваю, что подразумевался ADODB.Connection. Я подозреваю, что переменная ado объявлена не как ADODB.RecordSet, а следовательно обработка события MoveComplete тут неприменима.

Я объяснил, в чем суть ошибки, но если вы не понимаете, что я говорю, значит вам следует начать с чего-нибудь попроще, потому что вы вряд ли сможете объяснить, почему сделано именно так и что вы этим хотели сказать.

Возможно также, что переменная ado объявлена дважды и по-разному.
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796659
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть подозрение, что там юзают контрол ADODC , у которого есть такое событие, просто этот контрол неудачно назвали ado
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796665
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneесть подозрение, что там юзают контрол ADODC , у которого есть такое событие, просто этот контрол неудачно назвали ado Да, ты прав, уже нашел, но декларация вроде совпадает, да и у меня компилятор не ругается.
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796671
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помню там была какая-то засада с новыми версиями ado и не пропатченными контролами. надо полностью удалить контрол из формы, потом заново добавить и выбрать это событие, тогда там проставятся правильные параметры.
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796679
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я щас добавил весь код и контролы на форму, у меня компиляция прошла, на декларацию не ругается.
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796681
19Sky89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, Человек, который помогал делать, утверждает, что у него программа работает и никаких ошибок не возникает, возможно проблема с версией ado, как можно её исправить?
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796690
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поставить последнюю

PS
а на какой ОС вы эту программку запускаете: x86 или x64 ?

PS PS
а вы ADODC.ocx зарегистрировали?
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796697
19Sky89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, ОС х64, а каким образом регистрировать ADODC.ocx? (я скидывал у человека, который делал программу этот компонент и открывал его через controls в basic)
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796707
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если у вас windows 7 x64, то возможны проблемы.

регистрируется через:
regsvr32.exe adodc.ocx

если у вас уже установлена студия VS 6.0, то такой компонент у вас есть. проверьте, что вы поставили SP6.
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796712
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но мой совет: перепишите эту программку без использования этого устаревшего контрола. используйте
напрямую ADODB.Recordset с withevents. ищите примеры
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796716
19Sky89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, пробовал ставить на виртуальную машину windows xp, проблема такая же
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796772
19Sky89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, а переписывать программу совсем нет времени(
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796832
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private WithEvents rs  As ADODB.Recordset

Private Sub Form_Load()

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open "SELECT * FROM [Accounting]", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db.mdb;Persist Security Info=False", adOpenStatic, adLockReadOnly

End Sub

Private Sub rs_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
Dim b As Boolean

    b = False
    If Not pRecordset Is Nothing Then
        If Not (pRecordset.BOF Or pRecordset.EOF) Then
            b = True
        End If
    End If
    cmdDelete.Enabled = b
    cmdEdit.Enabled = b
    
End Sub




дальше сами
...
Рейтинг: 0 / 0
Помогите с ошибкой в программе VB
    #37796840
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а да, ещё один нюанс: у вас может не быть в системе x64 провайдера Microsoft.Jet.OLEDB.4.0

тогда нужно юзать такой: Microsoft.ACE.OLEDB.12.0
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите с ошибкой в программе VB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]