Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Помогите с ошибкой в программе VB / 18 сообщений из 18, страница 1 из 1
16.05.2012, 11:07
    #37796595
19Sky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
Доброго времени суток!
Ребята, написал программу, появляется ошибка компиляции: 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
16.05.2012, 11:16
    #37796618
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
как именно объявлен объект ado?
...
Рейтинг: 0 / 0
16.05.2012, 11:20
    #37796627
19Sky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
Shocker.Pro, извините, немного не понял ваш вопрос, дело в том, что я в VB новичок и программу мне помогали делать.
...
Рейтинг: 0 / 0
16.05.2012, 11:25
    #37796642
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
Код: 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
16.05.2012, 11:29
    #37796652
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
Ну те кто помог делать, пусть объяснит.
Дело в том, что событие MoveComplete есть только у ADODB.RecordSet. Но у него нет свойства RecordSet и т.п., которое вы пытаетесь использовать, подозреваю, что подразумевался ADODB.Connection. Я подозреваю, что переменная ado объявлена не как ADODB.RecordSet, а следовательно обработка события MoveComplete тут неприменима.

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

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

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

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

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

если у вас уже установлена студия VS 6.0, то такой компонент у вас есть. проверьте, что вы поставили SP6.
...
Рейтинг: 0 / 0
16.05.2012, 11:50
    #37796712
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
но мой совет: перепишите эту программку без использования этого устаревшего контрола. используйте
напрямую ADODB.Recordset с withevents. ищите примеры
...
Рейтинг: 0 / 0
16.05.2012, 11:52
    #37796716
19Sky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
Konst_One, пробовал ставить на виртуальную машину windows xp, проблема такая же
...
Рейтинг: 0 / 0
16.05.2012, 12:16
    #37796772
19Sky89
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
Konst_One, а переписывать программу совсем нет времени(
...
Рейтинг: 0 / 0
16.05.2012, 12:37
    #37796832
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
Код: 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
16.05.2012, 12:40
    #37796840
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ошибкой в программе VB
а да, ещё один нюанс: у вас может не быть в системе x64 провайдера Microsoft.Jet.OLEDB.4.0

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


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