|
|
|
создание процедуры в Access из Delphi посредством ADO
|
|||
|---|---|---|---|
|
#18+
Пытаюсь создать процедуру в Access из Delphi посредством ADO, но ничего не получается. Exception происходит в момент присваивания cat.ActiveConnection := cnn; Чего делать? Var cnn : Variant; //ADODB.Connection cmd : Variant; //ADODB.Command cat : Variant; //ADOX.Catalog begin try cnn := CreateOleObject('ADODB.Connection'); cmd := CreateOleObject('ADODB.Command'); cat := CreateOleObject('ADOX.Catalog.2.7'); try cnn.Open('Provider=''Microsoft.Jet.OLEDB.4.0'';Data Source=''c:\mydb.mdb'''); cmd.ActiveConnection := cnn; cmd.CommandText := 'PARAMETERS [CustId] integer; '+ 'Select * From Customers Where CustomerId = [CustId]'; cat.ActiveConnection := cnn; cat.Procedures.Append('CustomerById',cmd); cnn.Close; finally cnn := Unassigned; cmd := Unassigned; cat := Unassigned; end; except on E: Exception do raise; end; end; With best regards Alex Majorov ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:15 |
|
||
|
создание процедуры в Access из Delphi посредством ADO
|
|||
|---|---|---|---|
|
#18+
вот работающий примерчик под себя переделай Dim rst As ADODB.Recordset Dim cmd As ADODB.Command Set cmd = New ADODB.Command Set cmd.ActiveConnection = CurrentProject.Connection cmd.CommandText = "[Запрос3]" cmd.Parameters.Append cmd.CreateParameter("[Клиент1]", adInteger, adParamInput, , 2), где 2 - просто значение для параметра [Клиент1] Set rst = cmd.Execute(, 1) If Not (rst.EOF And rst.BOF) Then Debug.Print rst![Клиент] End If rst.Close ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:34 |
|
||
|
создание процедуры в Access из Delphi посредством ADO
|
|||
|---|---|---|---|
|
#18+
В Акесе нет Procedure. Со всем, это в MS SQL они есть Тебе нужно View использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:36 |
|
||
|
создание процедуры в Access из Delphi посредством ADO
|
|||
|---|---|---|---|
|
#18+
2Senin Viktor: А что получается когда в самом Accesse создаёшь запрос, а затем его сохраняешь? При мона делать не только запросы на выборку данных, но также на добавление, удаление и т.д.. И при этом их можно вызывать именно как StoredProc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 13:56 |
|
||
|
создание процедуры в Access из Delphi посредством ADO
|
|||
|---|---|---|---|
|
#18+
вот вам еще примерчик "Запрос 1" - это запрос на добавление записев и в нем есть параметры Dim cmd As ADODB.Command Dim prm As ADODB.Parameter Dim cat As ADOX.Catalog Set cat = New ADOX.Catalog Set cat.ActiveConnection = CurrentProject.Connection Set cmd = cat.Procedures("Запрос 1").Command For Each prm In cmd.Parameters prm.Value = Eval(prm.Name) Next prm cmd.Execute ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:00 |
|
||
|
создание процедуры в Access из Delphi посредством ADO
|
|||
|---|---|---|---|
|
#18+
предыдущий примерчик выполняется дольше чем ниже Dim lngRec As Long Dim cmd As ADODB.Command Set cmd = New ADODB.Command Set cmd.ActiveConnection = CurrentProject.Connection cmd.CommandText = "[Запрос 1]" cmd.Parameters.Append cmd.CreateParameter("[Forms]![Форма]![пф Клиенты]![код]", adInteger, adParamInput, , [Forms]![Форма]![пф Клиенты]![код]) cmd.Execute lngRec MsgBox "Добавлено " & lngRec & " записей." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:03 |
|
||
|
создание процедуры в Access из Delphi посредством ADO
|
|||
|---|---|---|---|
|
#18+
2Хам трамвайный: Вы похоже не поняли задачу. Требуется не выполнить процедуру в которой есть параметры, а её создать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:07 |
|
||
|
создание процедуры в Access из Delphi посредством ADO
|
|||
|---|---|---|---|
|
#18+
Я сделал это :) Хотя предыдущий код сделан в согласии с MSDN, он не работает. Работающий код приведён ниже: Var cmd : Variant; //ADODB.Command cat : Variant; //ADOX.Catalog begin try cmd := CreateOleObject('ADODB.Command'); cat := CreateOleObject('ADOX.Catalog.2.7'); try cmd.CommandText := 'PARAMETERS [CustId] integer; '+ 'Select * From Customers Where CustomerId = [CustId]'; cat.ActiveConnection := 'Provider=''Microsoft.Jet.OLEDB.4.0'';Data Source=''c:\mydb.mdb'''; cat.Procedures.Append('CustomerById',cmd); finally cmd := Unassigned; cat := Unassigned; end; except on E: Exception do raise; end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2003, 14:29 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32160668&tid=1681524]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 207ms |
| total: | 344ms |

| 0 / 0 |
