powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите поправить код
6 сообщений из 6, страница 1 из 1
помогите поправить код
    #37465786
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Код: 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.
Sub sql_query()

Dim Regn, nPer, i, j As Integer
Dim Baldate, stSQL, nOtch As String
Dim Flag As Boolean

Dim wsSheet As Worksheet
Dim wsBook As Workbook
Dim rnStart As Range
     
On Error Resume Next

'initial data
Regn = ThisWorkbook.Worksheets("CrystalSphere").Range("C4")
nPer = ThisWorkbook.Worksheets("CrystalSphere").Range("F4")

'начало цикла по датам
Application.DisplayAlerts = False
    For i =  1  To nPer
        Set Baldate = ThisWorkbook.Worksheets("CrystalSphere").Cells( 7 ,  16  + i)
        Set wsBook = Workbooks.Add
            Do While wsBook.Sheets.Count >  1     'удаляем все листы, кроме 1
                wsBook.Worksheets( 1 ).Delete
            Loop
    'цикл по выводу отчетных форм
        For j =  1  To  4 
                Select Case j '1=101, 2=102, 3=134, 4=135
                    Case j =  1 : nOtch = "101"
                    Case j =  2 : nOtch = "102"
                        If Right(Baldate,  1 ) <>  3  _
                            Or Right(Baldate,  1 ) <>  6  _
                            Or Right(Baldate,  1 ) <>  9  _
                            Or Right(Baldate,  2 ) <>  12  Then: Exit For
                    Case j =  3 : nOtch = "134"
                    Case j =  4 : nOtch = "135"
                End Select
            Set wsSheet = wsBook.Worksheets.Add
            Set rnStart = wsSheet.Range("A2")
            'query string
            stSQL = ThisWorkbook.Worksheets("CrystalSphere").Cells( 5  + j,  14 )
            stSQL = Replace(Replace(stSQL, "[%regn%]", Regn), "[%date%]", Baldate)
            'function call
            Add_Results_Of_ADO_Recordset stSQL, wsSheet, rnStart, True
            'worksheet name & propreties

            wsSheet.Name = Regn & "_" & nOtch & "_" & Baldate
            wsSheet.Columns("C:O").NumberFormat = "#,##0.00"
        Next j
    Next i
Application.DisplayAlerts = True
End Sub
Код, представленный выше слетает на строке
Код: plaintext
Add_Results_Of_ADO_Recordset stSQL, wsSheet, rnStart, True
без очевидных мне на то причин. Раньше такого не замечал..
Процедура Add_Results_Of_ADO_Recordset выглядит так
Код: 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.
Sub Add_Results_Of_ADO_Recordset(stSQL As String, wsSheet As Worksheet, rnStart As Range, Flag As Boolean)
Dim cnt As ADODB.Connection
Dim rst As ADODB.Recordset
Dim k As Integer
Dim IC, DS, LG, PS, stADO As String

On Error Resume Next
'выбор вида подключения
If ThisWorkbook.Worksheets("CrystalSphere").CheckBox4.Value = True Then
        IC = ThisWorkbook.Worksheets("CrystalSphere").Cells( 7 ,  3 )
        DS = ThisWorkbook.Worksheets("CrystalSphere").Cells( 8 ,  3 )
        'Initial Catalog (IC)   = SQL Database  (Bank_RUR/Bank_RUS);
        'Data Source     (DS)   = SQL Server    (M2010012000501\SQLEXPRESS)
            stADO = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" & _
            "Initial Catalog=" & IC & ";" & _
            "Data Source=" & DS
Else
        IC = ThisWorkbook.Worksheets("CrystalSphere").Cells( 7 ,  3 )   'Initial сatalog
        DS = ThisWorkbook.Worksheets("CrystalSphere").Cells( 8 ,  3 )   'Data source
        LG = ThisWorkbook.Worksheets("CrystalSphere").Cells( 9 ,  3 )   'Login
        PS = ThisWorkbook.Worksheets("CrystalSphere").Cells( 10 ,  3 )  'Password
            
            stADO = "Provider=SQLNCLI;Server=" & DS & ";Database=" & IC & ";Uid=" & LG & "; Pwd=" & PS & ";"
                
End If
      
    Set cnt = New ADODB.Connection
        With cnt
            .CursorLocation = adUseClient
            .Open stADO
            .CommandTimeout =  0 
            Set rst = .Execute(stSQL) 'тут ошибка, если в базе нет!!!!!!!!!!!
        End With
    'Fields name
    If Flag = True Then
        For k =  0  To rst.Fields.Count -  1 
            wsSheet.Cells(rnStart.Row -  1 , rnStart.Column + k).Value = rst(k).Name
        Next k
    End If
    'Here we add the Recordset to the sheet from A1
    rnStart.CopyFromRecordset rst
    'Cleaning up
        rst.Close
        cnt.Close
    Set rst = Nothing
    Set cnt = Nothing
End Sub

Подскажите, как поправить!
Спасибо!
...
Рейтинг: 0 / 0
помогите поправить код
    #37465803
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибку что-ли бы показали, а то гадать лень (у вас куча переменных Variant)
...
Рейтинг: 0 / 0
помогите поправить код
    #37465812
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощения, вот скрин ошибки
...
Рейтинг: 0 / 0
помогите поправить код
    #37465821
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One(у вас куча переменных Variant)ни одной нет!
...
Рейтинг: 0 / 0
помогите поправить код
    #37465829
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBKonst_One(у вас куча переменных Variant)ни одной нет!

не горячитесь так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
'и объявите ByVal входные параметры раз так их юзаете
Sub Add_Results_Of_ADO_Recordset(ByVal stSQL As String, wsSheet As Worksheet, rnStart As Range, Flag As Boolean)
...
Dim IC, DS, LG, PS, stADO As String

'закомментарьте , увидите , что у вас происходит
'On Error Resume Next
...
...
Рейтинг: 0 / 0
помогите поправить код
    #37465838
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One, большое спасибо! не заметил
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите поправить код
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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