Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA + Excel+ SQL / 23 сообщений из 23, страница 1 из 1
28.08.2007, 12:31
    #34757615
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
как выгружать полученные данные в открытый лист, то есть есть лист на нем кнопка при нажатии на которую идет выгрузка данных полученных select,код следующий
Dim str_p As String
str_p = Лист2.Cells(2, "H") + Лист2.Cells(3, "H") 'считываем путь к базе
Set cn = New ADODB.Connection
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.ConnectionString = str_p
cn.Open
Dim rs As New ADODB.Recordset
rs.Source = "SELECT SUM(S1), SUM(S2) FROM (select sum(dp.akt_rasx) As S1 ,sum(dp.summa) As S2 from d_point dp where dp.k_Month = 7 And dp.Year = 2007 And (dp.k_f46 = 1 Or dp.k_f46 = 27)Union ALL select sum(dps.rasx_a) As S1,sum(dps.summa) As S2 from d_dopsum dps where dps.k_Month = 7 And dps.Year = 2007 And (dps.k_f46 = 1 Or dps.k_f46 = 27)) T1"
Set rs.ActiveConnection = cn
rs.Open


сюда вставить выгрузку в открытый лист
помогите кто знает........
...
Рейтинг: 0 / 0
28.08.2007, 12:46
    #34757715
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
Код: plaintext
Range("A1").CopyFromRecordset rs


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
28.08.2007, 12:53
    #34757764
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
HandKot
Код: plaintext
Range("A1").CopyFromRecordset rs


I Have Nine Lives You Have One Only
THINK!

не поняла, и не работает
Поясню, в ячейку C8-выгрузить sum(s1)
а в ячейку С9-sum(s2)
...
Рейтинг: 0 / 0
28.08.2007, 12:53
    #34757766
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
?????
...
Рейтинг: 0 / 0
28.08.2007, 13:06
    #34757853
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
почему то число не появляется???
...
Рейтинг: 0 / 0
28.08.2007, 13:07
    #34757864
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
ну если так, то

Код: plaintext
1.
Range("C8").Value = rs.Fields( 1 ).value
Range("C9").Value = rs.Fields( 2 ).value

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
28.08.2007, 13:10
    #34757873
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
HandKotну если так, то

Код: plaintext
1.
Range("C8").Value = rs.Fields( 1 ).value
Range("C9").Value = rs.Fields( 2 ).value

I Have Nine Lives You Have One Only
THINK!

ничего...
...
Рейтинг: 0 / 0
28.08.2007, 13:10
    #34757877
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
((((
...
Рейтинг: 0 / 0
28.08.2007, 13:11
    #34757883
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
как определить есть ли вообще в rs.Source что нить???
...
Рейтинг: 0 / 0
28.08.2007, 13:14
    #34757907
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
Код: plaintext
1.
2.
'если нет конца рекордсета
If Not rs.Eof Then
...


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
28.08.2007, 13:28
    #34757980
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
чего то не хватает...
так как не работает
если есть пример, или какие нить догадки, буду рада
...
Рейтинг: 0 / 0
28.08.2007, 14:06
    #34758153
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
Вы сначала проверьте запрос в Акцесе
будут данные возвращатся?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
28.08.2007, 14:11
    #34758180
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
возвращаются
...
Рейтинг: 0 / 0
28.08.2007, 16:00
    #34758695
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
Klera, фотку не хотите показать? :)
...
Рейтинг: 0 / 0
28.08.2007, 16:25
    #34758788
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
Kleraвозвращаются
ну если возвращаются, тогда так
в коде после rs.Open пропишите

Код: plaintext
1.
MsgBox rs.Field( 1 ).Value
MsgBox rs.Field( 2 ).Value

будут появлятся сообщения?


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
29.08.2007, 07:08
    #34760035
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
Dim str_p As String

str_p = Лист2.Cells(2, "H") + Лист2.Cells(3, "H") 'считываем путь к базе

Set cn = New ADODB.Connection
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.ConnectionString = str_p
cn.Open

Dim rs As New ADODB.Recordset
rs.Source = "SELECT SUM(S1) as bar , SUM(S2) " + _
"FROM (select sum(dp.akt_rasx) As S1 ,sum(dp.summa) As S2 " + _
"from d_point dp " + _
"where dp.k_Month = 7 And dp.Year = 2007 " + _
"And (dp.k_f46 = 1 Or dp.k_f46 = 27)" + _
"Union ALL " + _
"select sum(dps.rasx_a) As S1,sum(dps.summa) As S2 " + _
"from d_dopsum dps where dps.k_Month = 7 And dps.Year = 2007 And (dps.k_f46 = 1 Or dps.k_f46 = 27)) T1"

Set rs.ActiveConnection = cn
rs.Open


'если нет конца рекордсета
If Not rs.EOF Then
MsgBox (rs.Fields(0).Name)

' Range("C8").Value = rs.Fields("bar").Value
Else
' Range("C8").Value = 0
MsgBox (1)
End If

rs.Close
Set rs = Nothing


(rs.Fields(0).Name)-возвращает имя bar,а (rs.Fields(0).value) ничего не возвращает почему то..
...
Рейтинг: 0 / 0
29.08.2007, 10:49
    #34760490
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
ну прям не знаю

тогда замените строку запроса на такую
Код: plaintext
Select  1  As [bar],  2  As [Field2]

тогда хоть значения появятся?

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
29.08.2007, 11:33
    #34760681
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
я поняла в чем дело, но не знаю как исправить-в общем дело в подключенных библиотеках, какие надо подключать библиотеки?
...
Рейтинг: 0 / 0
29.08.2007, 11:56
    #34760791
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
Код: plaintext
Microsoft ActiveX Data Objects x.xx Library

P.S. и как же у вас это работало без подключенных библиотек?

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
29.08.2007, 12:08
    #34760853
Klera
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
есть у кого нить работающий проект, не могу разобраться, помогите плис, прикрепите....
...
Рейтинг: 0 / 0
29.08.2007, 12:47
    #34761025
TIKO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ 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.
Dim str_p As String
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String

str_p = Лист2.Cells( 2 , "H") + Лист2.Cells( 3 , "H") 'считываем путь к базе


cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.ConnectionString = str_p
cn.Open

strSQL = "SELECT SUM(S1) as bar , SUM(S2) " & _
"FROM (select sum(dp.akt_rasx) As S1 ,sum(dp.summa) As S2 " + _
"from d_point dp " & _
"where dp.k_Month = 7 And dp.Year = 2007 " & _
"And (dp.k_f46 = 1 Or dp.k_f46 = 27)" & _
"Union ALL " & _
"select sum(dps.rasx_a) As S1,sum(dps.summa) As S2 " & _
"from d_dopsum dps where dps.k_Month = 7 And dps.Year = 2007 And (dps.k_f46 = 1 Or dps.k_f46 = 27)) T1"


With rs
Set .ActiveConnection = cn
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.Source = strSQL
.Open
If .RecordCount >  0  Then
    .MoveFirst
    Do Until .EOF
        Debug.Print .Fields("bar").Value
        .MoveNext
    Loop
Else
    MsgBox "Нет записей"
End If
.Close
cn.Close
End With
Set rs = Nothing
Set cn = Nothing
...
Рейтинг: 0 / 0
31.08.2007, 12:57
    #34767564
Nitrolis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
Еще предложение...
попробовать в коде заменить строку:
Код: plaintext
rs.Source = "SELECT SUM(S1) as bar , SUM(S2) " + _
на
Код: plaintext
rs.Source = "SELECT SUM(S1) as bar , SUM(S2) as S2" + _

и строку:
Код: plaintext
"select sum(dps.rasx_a) As S1,sum(dps.summa) As S2 " + _
на
Код: plaintext
"select sum(dps.rasx_a) As bar,sum(dps.summa) As S2 " + _
...
Рейтинг: 0 / 0
06.11.2007, 15:00
    #34919090
Pr0v0dn1k
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VBA + Excel+ SQL
по-моему нужно

вместо:
Код: plaintext
cn.ConnectionString = str_p

написать:
Код: plaintext
cn.ConnectionString = "data source=" & str_p
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA + Excel+ SQL / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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