Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / выполнение процедуры SQL / 15 сообщений из 15, страница 1 из 1
17.07.2009, 14:45
    #36095786
GoodCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
помогите плз чайнику
как запустить из VB stored procedures на SQL
без вывода данных в excel
...
Рейтинг: 0 / 0
17.07.2009, 14:53
    #36095812
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
ADODB.Command используй
...
Рейтинг: 0 / 0
17.07.2009, 15:00
    #36095832
GoodCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
Konst_One,
я это понимаю)
но новичек в этом примеров куча но никак разобраться не могу
запрос с результатом в виде select с выбором дат и тп .делать научился а чтобы просто запустить процедуру)
нет ли случайно примера буду очень признателен.
...
Рейтинг: 0 / 0
17.07.2009, 15:14
    #36095876
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Dim cmd As ADODB.Command
Dim p As ADODB.Parameters
Dim RET as Long

    Set cmd = New ADODB.Command
    Set cmd.ActiveConnection = CN  'открытый объект ADODB.Connection
    cmd.CommandTimeout =  20 
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "sp_MESSAGE"
    Set p = cmd.Parameters
    p.Append cmd.CreateParameter("RETURN_VALUE", adInteger, adParamReturnValue)
    cmd.Execute
    RET = p("RETURN_VALUE").Value
    Set p = Nothing
    Set cmd = Nothing
...
Рейтинг: 0 / 0
17.07.2009, 15:46
    #36095977
GoodCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
Konst_One,
у меня был рабочий файл( не мной созданы)
который на основе процедуры делал вывод в ёксель
я так понимаю мне надо править Public Sub Make_TAA_Activity() см влож файл
на основе выше предложенного вами
убрать ADODB.Recordset и лишние параметры
или лучше сделать все заново?
...
Рейтинг: 0 / 0
17.07.2009, 15:50
    #36095987
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
не понял вопроса. да можно использовать ADODB.Command, но рекордсет вам всё равно нужен, поэтому не вижу смысла что-то переделывать или у вас что-то не работает?
...
Рейтинг: 0 / 0
17.07.2009, 16:11
    #36096040
GoodCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
Konst_One,

я имею ввиду
там настроены все подключения к БД все прописано
вопрос с какого места использовать ADODB.Command на основе приложеного файла
просто проще учится на работающих примерах)
если конечно не занимаю много времени, может комуто пригодится таким же начинающим как я
...
Рейтинг: 0 / 0
17.07.2009, 16:14
    #36096049
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
вы не ответили на вопрос: зачем вам что-то менять?
вы пишите какую-то программу и у вас что-то не получается или что?
кусок кода выкладываайте сюда в тэгах SRC и будем разбираться
...
Рейтинг: 0 / 0
17.07.2009, 16:46
    #36096137
GoodCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
Konst_One,

меняю потомучто у меня есть "рабочий вариант " с выводом таблицы в ёксель на основе процедуры SQL
а мне надо надо чтобы процедура просто запускалась и при успешном выполнении писала что то типа ОК

и хочу это сделать на основе "рабочего варианта" как примера. но не знаю как т.к это мне понадобилось впервые . поэтому и спрашиваю совета

а цель банальная минуя query analiser посредством VB запустить нужную процедуру

я выложил в txt весь модуль "рабочего варианта "
мне нужно поменять Public Sub Make_TAA_Activity() чтобы запускалась процедура без вывода
в ёксель( соответствено в SQL все уже сделано)
...
Рейтинг: 0 / 0
17.07.2009, 16:51
    #36096151
GoodCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
это как было
Код: plaintext
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.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
[/src]Option Explicit

Public cnn As New ADODB.Connection

Public Function OpenConection() As Integer
On Error GoTo err_
    OpenConection = - 1 
    
    If cnn.State <>  0  Then cnn.Close
    
    cnn.Open ("Provider=MSDASQL.1;Persist Security Info=False;Data Source=base")
    cnn.CommandTimeout =  100000 
    OpenConection =  0 
    
    Exit Function
err_:
    MsgBox "Íå ìîãó ïðèñîåäèíèòüñÿ ê ñåðâåðó!" & err.Description
End Function

Public Sub CloseConection()
    If cnn.State <>  0  Then cnn.Close
    Set cnn = Nothing
End Sub

Public Sub Make_TAA_Activity()
On Error GoTo error1

Dim query As String, nameProc As String, sheet As Worksheet, rs As ADODB.Recordset, sheetRep As Worksheet, i As Integer
Set sheetRep = Sheets("Ðåçóëüòàò")
i =  4 

nameProc = "rpt_TAA_Activity"
If OpenConection <  0  Then Exit Sub

If UserForm.Is_OK Then
    cnn.Execute "set dateformat dmy"
    query = "exec dbo." & nameProc & " '" & _
            CStr(UserForm.dtDateFrom.Value) & "', '" & _
            CStr(UserForm.dtDateTo.Value) & "', 0, 0"
    
    Set rs = New ADODB.Recordset
    Call rs.Open(query, cnn, ADODB.adOpenForwardOnly, ADODB.adLockReadOnly)
    
    If rs.EOF Then
        MsgBox "Íåò äàííûõ!", vbCritical
        Set rs = Nothing
        CloseConection
        Exit Sub
    End If
    rs.MoveFirst
    
'   Depo     Name    Week_num    workdays    Business    TT_Plan TT_fact
'   TT_PercVisit    TT_Active   TT_PercActive   VST_Plan    VST_Fact
'   VST_Active  VST_PercEffect  SellMoney   SellCount


    sheetRep.Activate
    Do While Not rs.EOF
        sheetRep.Cells(i,  1 ).Value = rs!Depo
        sheetRep.Cells(i,  2 ).Value = rs!SAS
        sheetRep.Cells(i,  3 ).Value = rs!Name
        sheetRep.Cells(i,  4 ).Value = rs!Week_num
        sheetRep.Cells(i,  5 ).Value = rs!workdays
        sheetRep.Cells(i,  6 ).Value = rs!business
        sheetRep.Cells(i,  7 ).Value = rs!TT_Plan
        sheetRep.Cells(i,  8 ).Value = rs!TT_fact
        sheetRep.Cells(i,  9 ).Value = rs!TT_PercVisit
        sheetRep.Cells(i,  10 ).Value = rs!TT_Active
        sheetRep.Cells(i,  11 ).Value = rs!TT_PercActive
        sheetRep.Cells(i,  12 ).Value = rs!VST_Plan
        sheetRep.Cells(i,  13 ).Value = rs!VST_Fact
        sheetRep.Cells(i,  14 ).Value = rs!VST_Active
        sheetRep.Cells(i,  15 ).Value = rs!VST_PercEffect
        sheetRep.Cells(i,  16 ).Value = rs!SellMoney
        sheetRep.Cells(i,  17 ).Value = rs!SellCount
        If rs!business = "Èòîãî" Then
            sheetRep.Rows(i).Font.Bold = True
        Else
            sheetRep.Rows(i).Font.Bold = False
        End If
        
       
        rs.MoveNext
        i = i +  1 
    Loop
    sheetRep.Cells( 1 ,  1 ).Select
    rs.Close
    Set rs = Nothing
    Exit Sub
    
End If

error1:
    Set rs = Nothing
    MsgBox "Îøèáêà! Îáðàòèòåñü ê ðàçðàáîò÷èêàì! " & err.Description, vbCritical
End Sub
[/SRC]
...
Рейтинг: 0 / 0
17.07.2009, 16:51
    #36096153
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
я вам уже код привёл выше, подставьте название своей процедуры и обработайте RET
...
Рейтинг: 0 / 0
17.07.2009, 17:29
    #36096257
GoodCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
Konst_One,

хорошо спасибо буду пробовать
тогда последний вопрос
как написать чтобы выводил текст при окончании выполнения процедуры
...
Рейтинг: 0 / 0
17.07.2009, 17:31
    #36096263
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
выводил куда?

если в конкретную ячейку, то как и у вас в коде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim s as String
If RET> 0  then
s="Все выполнилось успешно!"
else
s="Ошибка выполнения"
end if
sheetRep.Cells( 1 ,  1 ).Value = s
...
Рейтинг: 0 / 0
17.07.2009, 17:42
    #36096288
GoodCat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
Konst_One,
лучше msgBox
и куда в вашем коде это вставить
...
Рейтинг: 0 / 0
17.07.2009, 17:48
    #36096298
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выполнение процедуры SQL
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim s as String
If RET> 0  then
s="Все выполнилось успешно!"
else
s="Ошибка выполнения"
end if
MsgBox s
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / выполнение процедуры SQL / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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