powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нужен утвердительный ответ
19 сообщений из 19, страница 1 из 1
Нужен утвердительный ответ
    #33666102
SHGulnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужен утвердительный ответ устала копаться на форумах.
Подскажите пжл.
Мне поставили задачу
есть база Access
есть приложение VB
в Access в модуле прописана процедура

Public Sub InsertTab1(MyTable As String, pN1 As String, pN2 As String)
On Error GoTo pEnd
Dim MySQL As String
MySQL = "INSERT INTO " & MyTable & _
" (naimr, naimk)" & _
" VALUES ('" & pN1 & "', '" & pN2 & "')"

DoCmd.SetWarnings False
DoCmd.RunSQL MySQL
Exit Sub
pEnd:
Exit Sub
End Sub

Моя задача в VB
передать параметры и запустить эту процедуру.
То что можно использовать с параметрами запросы я знаю

Типа

PARAMETERS [@naimr] Text ( 255 ), [@naimk] Text ( 255 );
INSERT INTO spogr ( naimr, naimk )
SELECT [@naimr] AS Выражение1, [@naimk] AS Выражение2;

Но этот вариант моего шефа не устраивает.

Подскажите мою задачу можно решить или нет?
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666121
AndreyF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHGulnurМоя задача в VB
передать параметры и запустить эту процедуру.
То что можно использовать с параметрами запросы я знаю

Э-эх...
Зарываться в Help/книжки и читать про

ADODB.Connection
ADODB.Command
ADODB.Execute
ADODB.Recordset
ADODB.Parameters

P.S Help на эту тему даже в Access-e есть.
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666122
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не очень понял что хочет ваш шеф но в VB выглядет примерно так ваш код

Private Sub Insert(MyTable As String, pN1 As String, pN2 As String)
Dim con As New ADODB.Connection
Dim com As New ADODB.Command
Dim dbfile As String
Dim strSQL As String

dbfile = "c:\mydb.mdb"
con.Open "Driver={Microsoft Access Driver (*.mdb)};Dbq=" & dbfile & ";Uid=Admin;Pwd=;" 'ODBC соединенеие


strSQL = "INSERT INTO " & MyTable & _
" (naimr, naimk)" & _
" VALUES ('" & pN1 & "', '" & pN2 & "')"



With com
.ActiveConnection = con
.CommandText = strSQL
.Execute
End With

End Sub

Можно какже создать комманд в DataEnvironment с параметрами и вызывать в процедуре с присвоениями параметров
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666128
SHGulnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да нет? это процедура должна быть в модуле Access -а
а вызываться с VB.
Ну вот хочет он так чтоб было
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666317
SHGulnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну неужели никто не может мне ответить или что нить посоветовать
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666368
SHGulnur...
Подскажите мою задачу можно решить или нет?

Только если открыть Access Application
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666398
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SHGulnur, уточните, что именно вы хотите: запустить запрос с параметрами в Access из VB или выполнить процедуру, находящуюся в стандратном модуле приложения Access?
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666428
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, решить задачу можно. Нужен второй запрос, в котором будет вызов указанной процедуры. И этот второй запрос уже выполнять через ADO. Чуть позже будет пример.
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666430
AshtonSHGulnur, уточните, что именно вы хотите: запустить запрос с параметрами в Access из VB или выполнить процедуру, находящуюся в стандратном модуле приложения Access?
Вроде ж четко написано

авторв Access в модуле прописана процедура

Public Sub InsertTab1(MyTable As String, pN1 As String, pN2 As String)
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666540
AshtonSHGulnur, уточните, что именно вы хотите: запустить запрос с параметрами в Access из VB или выполнить процедуру, находящуюся в стандратном модуле приложения Access?
Вроде ж четко написано

авторв Access в модуле прописана процедура

Public Sub InsertTab1(MyTable As String, pN1 As String, pN2 As String)
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666552
marvanДа, решить задачу можно. Нужен второй запрос, в котором будет вызов указанной процедуры. И этот второй запрос уже выполнять через ADO. Чуть позже будет пример.
Ждем с нетерпением ...


Извините за случайный повторный ответ.
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666588
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По поводу процедуры в модуле Access. После выполенения запроса неплохо было бы включать обратно сообщения на подтверждение. И зачем в конце писать кучу "Exit Sub".

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Sub InsertTab1( _
  MyTable As String, _
  pN1 As String, _
  pN2 As String)
    On Error GoTo pEnd
    
    Dim MySQL As String
    
    MySQL = "INSERT INTO " & MyTable & _
      " (naimr, naimk)" & _
      " VALUES ('" & pN1 & "', '" & pN2 & "')"
    
    DoCmd.SetWarnings False
    DoCmd.RunSQL MySQL
    DoCmd.SetWarnings True
pEnd:
End Sub

По теме.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Sub AddRecord()
    Dim acApp As Object
    
    Set acApp = CreateObject("Access.Application")
    acApp.Visible = False
    
    acApp.OpenCurrentDatabase "D:\1\db1.mdb", False
    
    acApp.Run "InsertTab1", "Таблица1", "А", "Б"
    acApp.Quit
    
    Set acApp = Nothing
End Sub
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33666679
Ashton
...
По теме.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Sub AddRecord()
    Dim acApp As Object
    
    Set acApp = CreateObject("Access.Application")
    acApp.Visible = False
    
    acApp.OpenCurrentDatabase "D:\1\db1.mdb", False
    
    acApp.Run "InsertTab1", "Таблица1", "А", "Б"
    acApp.Quit
    
    Set acApp = Nothing
End Sub

Ага, только можно сразу:
Set acApp = GetObject("D:\1\db1.mdb")
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33667012
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока пытался реализовать задуманное - Ashton всё уже сделал :)
А запрос типа:
Код: plaintext
1.
PARAMETERS MyTable Text (  255  ), pN1 Text (  255  ), pN2 Text (  255  );
SELECT InsertTab([MyTable],[pN1],[pN2]) AS RetVal;
из VB запустить не удалось.
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33667591
SHGulnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ashton
Большое спасибо
The Fool On The Hill и Вам

Подскажите еще чтоб после вставки
вызывая в VB процедура Access возвращала ID
вставленной записи

Еще раз спасибо!!!
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33667619
SHGulnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это для marvan

Чтобы запустить запрос на добавление

PARAMETERS [@naimr] Text ( 255 ), [@naimk] Text ( 255 );
INSERT INTO spogr ( naimr, naimk )
SELECT [@naimr] AS Выражение1, [@naimk] AS Выражение2;

в VB

Public Sub AddRecord()
Conn.ConnectMDB (Text1.Text)
Set cmd = Nothing
Set cmd = New ADODB.Command
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = Conn.Connection
cmd.CommandText = "NewRec"
cmd.Parameters.Append cmd.CreateParameter("param1", adVarChar, adParamInput, 500, "p_text_rus")
cmd.Parameters.Append cmd.CreateParameter("param2", adVarChar, adParamInput, 500, "p_text_kaz")
cmd.Execute
end sub
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33667731
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Public Function InsertTab1( _
  MyTable As String, _
  pN1 As String, _
  pN2 As String) As Long
    On Error GoTo pEnd
    
    Dim MySQL As String
    
    MySQL = "INSERT INTO " & MyTable & _
      " (naimr, naimk)" & _
      " VALUES ('" & pN1 & "', '" & pN2 & "')"
    
    DoCmd.SetWarnings True
    DoCmd.RunSQL MySQL
    DoCmd.SetWarnings True
    
    InsertTab1 = DMax("[Id]", MyTable)
pEnd:
End Function

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Sub AddRecord()
    Dim acApp As Object
    
    Set acApp = CreateObject("Access.Application")
    acApp.Visible = False
    
    acApp.OpenCurrentDatabase "D:\1\db1.mdb", False
    
    MsgBox acApp.Run("InsertTab1", "Таблица1", "А", "Б")
    acApp.Quit
    
    Set acApp = Nothing
End Sub
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33667899
SHGulnur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо
Мне еще надо чтоб возвращалась сообщение об ошибки если допусти уникальность нарушается
а тут тишина Сообщение не выходит.
...
Рейтинг: 0 / 0
Нужен утвердительный ответ
    #33670087
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подключи библиотеку "Microsoft DAO Object Library", если она не подключена, и перепиши функцию в модуле Access следующим образом.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Public Function InsertTab1( _
  MyTable As String, _
  pN1 As String, _
  pN2 As String) As Variant
    On Error GoTo pEnd
    
    Dim MySQL As String
    
    MySQL = "INSERT INTO " & MyTable & _
      " (naimr, naimk)" & _
      " VALUES ('" & pN1 & "', '" & pN2 & "')"
    
    CurrentDb.Execute MySQL, dbFailOnError
       
    InsertTab1 = DMax("[Id]", MyTable)
    Exit Function
    
pEnd:
    InsertTab1 = Err.Number & " " & Err.Description
End Function

Потому что, в случае с RunSQL сообщение об ошибке будет выводится на экран, с ожиданием от пользователя каких-либо действий.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Нужен утвердительный ответ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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