powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Запись данных в SQL Server из табл. Excel SQL запросом.
11 сообщений из 11, страница 1 из 1
Запись данных в SQL Server из табл. Excel SQL запросом.
    #35775375
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без проблем получаю данные из 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
Запись данных в SQL Server из табл. Excel SQL запросом.
    #35775473
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS Вначале пробовал через ODBC. Читает базу некорректно. Пишет в нее тоже (из другого приложения). Вначале думал, что языковые стандарты - не помогло. Заменил драйвер на SQL Native Client, и все понеслось нормально.
...
Рейтинг: 0 / 0
Запись данных в SQL Server из табл. Excel SQL запросом.
    #35775479
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YUBAPS Вначале пробовал через ODBC. Читает базу некорректно. Пишет в нее тоже (из другого приложения). Вначале думал, что языковые стандарты - не помогло. Заменил драйвер на SQL Native Client, и все понеслось нормально. Вопрос о записи из Excel так и остался неразрешенным. QueryTable тоже непонятно как повторно использовать-редактировать. Метод .add плодит коннекты при каждом обновлении таблиц.
...
Рейтинг: 0 / 0
Запись данных в SQL Server из табл. Excel SQL запросом.
    #35775627
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, как-то сама собой решилась проблема обновления и изменения запросов через один коннект. Привожу код. Наверно ничего нового, но кому-то м.б. и пригодится.
Код: 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
Запись данных в SQL Server из табл. Excel SQL запросом.
    #35776094
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YUBA,
попробуй юзать UPDATE ... SET ...=... FROM strsql
...
Рейтинг: 0 / 0
Запись данных в SQL Server из табл. Excel SQL запросом.
    #35776099
DeViLsssss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
точнее UPDATE [tblname] SET [tblname].[tblfield]="value" FROM strsql

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


I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Запись данных в SQL Server из табл. Excel SQL запросом.
    #35833093
YUBA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот. Без проблем читаются данные из 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
Запись данных в SQL Server из табл. Excel SQL запросом.
    #36022810
cyber-fox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ActiveSheet.QueryTables("Q10").CommandText = strsql

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


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