Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись данных в SQL Server из табл. Excel SQL запросом. / 11 сообщений из 11, страница 1 из 1
24.01.2009, 15:53
    #35775375
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
Без проблем получаю данные из SQL Server в Excel таким образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  With ActiveSheet.QueryTables.Add(Connection:=Array( _
        "OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=UBAPC\SQLEXPRESS;Use Procedure for Prepare=1" _
        , _
        ";Auto Translate=True;Packet Size=4096;Workstation ID=UBAPC;Use Encryption for Data=False;Tag with column collation when possible" _
        , "=False;Initial Catalog=MICEX"), Destination:=Range("B3")) 

        .CommandType = xlCmdSql
        .CommandText = Array("SELECT paper_no, time,  ""open"", high, low,""close"",  quantity " & _
"FROM MICEX.dbo.arch_min1 where paper_no=291 " & _
"ORDER BY arch_min1.time")
......... 
После обработки данные из таблиц Excel надо добавить данные в другие таблицы БД SQL Server, иногда и создавать новые таблицы.
Когда-то, оч. давно (практически уже неправда), делал это из VB6. Сейчас даже не знаю с чего начать. Не пойму - ни как приконнектиться к БД для передачи ни как данные сформировать. Вроде уже все просмотрел. Наверняка задачка решенная. Помогите ссылкой или кодом.
Да, и хотелось бы один постоянный коннект создать и через него запросами чтение-запись работать.
Сейчас, ИМХО, что-то неправильное.
...
Рейтинг: 0 / 0
24.01.2009, 18:29
    #35775473
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
PS Вначале пробовал через ODBC. Читает базу некорректно. Пишет в нее тоже (из другого приложения). Вначале думал, что языковые стандарты - не помогло. Заменил драйвер на SQL Native Client, и все понеслось нормально.
...
Рейтинг: 0 / 0
24.01.2009, 18:37
    #35775479
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
YUBAPS Вначале пробовал через ODBC. Читает базу некорректно. Пишет в нее тоже (из другого приложения). Вначале думал, что языковые стандарты - не помогло. Заменил драйвер на SQL Native Client, и все понеслось нормально. Вопрос о записи из Excel так и остался неразрешенным. QueryTable тоже непонятно как повторно использовать-редактировать. Метод .add плодит коннекты при каждом обновлении таблиц.
...
Рейтинг: 0 / 0
24.01.2009, 22:19
    #35775627
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. 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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
 Sub Макрос10()

Dim connstring2 As String
Dim connstring1 As String

Sheets("Лист4").Activate
sqlstring = "SELECT paper_no, time,  ""open"", high, low,""close"",  quantity " & _
"FROM MICEX.dbo.arch_min1 where paper_no=291 " & _
"ORDER BY arch_min1.time"
connstring1 = _
"OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=UBAPC\SQLEXPRESS;Use Procedure for Prepare=1;"
connstring2 = _
        "Auto Translate=True;Packet Size=4096;Workstation ID=UBAPC;Use Encryption for Data=False;Tag with column collation when possible" & _
         "=False;Initial Catalog=MICEX"
   
With ActiveSheet.QueryTables.Add(Connection:=connstring1 & connstring2, _
        Destination:=Range("B3"))
    
    .Name = "Q10"
    .CommandType = xlCmdSql
    .CommandText = sqlstring
    .Refresh BackgroundQuery:=False
    .RefreshStyle = xlOverwriteCells
    
    .Refresh
End With
End Sub

Sub Macros11()
Dim strsql As String
strsql = "SELECT paper_no, time,  ""open"", high, low,""close"",  quantity " & _
"FROM MICEX.dbo.arch_min1 where paper_no=291 " & _
"ORDER BY arch_min1.time"
'gt.Refresh
MsgBox ActiveSheet.QueryTables.Count
ActiveSheet.QueryTables("Q10").CommandText = strsql 'Здесь иногда возникает ошибка, почему - не знаю
ActiveSheet.QueryTables("Q10").Refresh
End Sub

Sub Macros12()
'gt.Refresh
Dim strsql As String
strsql = "SELECT paper_no, time,  quantity " & _
"FROM MICEX.dbo.arch_min1 where paper_no=291 " & _
"ORDER BY arch_min1.time"
MsgBox ActiveSheet.QueryTables.Count
ActiveSheet.QueryTables("Q10").CommandText = strsql 'Здесь иногда возникает ошибка, почему - не знаю
ActiveSheet.QueryTables("Q10").Refresh
End Sub

 
Писать в базу -ну вот никак не получается. :(
...
Рейтинг: 0 / 0
25.01.2009, 16:32
    #35776094
DeViLsssss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
YUBA,
попробуй юзать UPDATE ... SET ...=... FROM strsql
...
Рейтинг: 0 / 0
25.01.2009, 16:35
    #35776099
DeViLsssss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
точнее UPDATE [tblname] SET [tblname].[tblfield]="value" FROM strsql

замечания:
1. регистр букв названий полей учитывается.
2. тип значений тоже учитывается
...
Рейтинг: 0 / 0
26.01.2009, 23:39
    #35778768
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
Эт понятно. Однако не идет. Подставляем в предыдущий код - идет ошибка - нет связи с базой. Селекты проходят без проблем.
...
Рейтинг: 0 / 0
26.01.2009, 23:49
    #35778772
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
update, insert, creat не идут. Затыкается на .Refresh.
М.б. на ADO перейти, но как-то в лом.
QueryDef через OLEDB у меня не идет.
И еще вопрос -как таблице Excel целиком в базу добавить? ИМХО, построчно - эт неправильно.
...
Рейтинг: 0 / 0
27.01.2009, 08:08
    #35778995
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
QueryTable ИМХО ТОЛЬКО для выборки записей.
Для конструкций INSERT UPDATE DELETE лучше использовать ADODB.Command


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
23.02.2009, 22:49
    #35833093
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
Ну вот. Без проблем читаются данные из SQL Server, добавляются, создаются таблицы из Excel.
Скажем таким кодом добавляется несколько строк -
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub AdStrQuery()
 'Dim xlSheet As Excel.Worksheet
 Dim sqlstring As String
 sqlstring = "INSERT Frends000(Сod, Family, Name, BDay) " & _
    "VALUES (25,'aaa', 'bbb', '12.12.1968'),(26,'ccc', 'bbb', '12.12.1955'),(27,'rrr', 'bbb', '12.12.1957');"
Set rs = New ADODB.Recordset
    rs.Open sqlstring, cn
Set rs = Nothing
End Sub
Но в реале надо добавлять строки из Excel в БД SQL Server диапазонами (Range), большими и часто. Раз в несколько мин данные обновляются внешним источником и обсчитываются.
Циклом конечно можно, но утомительно.
Нельзя-ли все таки загрузить в запрос на добавление весь диапазон сразу?
...
Рейтинг: 0 / 0
03.06.2009, 10:13
    #36022810
cyber-fox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запись данных в SQL Server из табл. Excel SQL запросом.
ActiveSheet.QueryTables("Q10").CommandText = strsql

сдесь возникает ошибка, т.к. кол-во передаваемых символов в переменной превышает 32767. Ищу ответ. ведь используя Microsoft Query можно вставлять большие тексты. Как же программно обойти ограничение?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись данных в SQL Server из табл. Excel SQL запросом. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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