Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel <--> MSSQL (или MySQL) ? / 16 сообщений из 16, страница 1 из 1
05.08.2013, 11:48
    #38354851
Excel <--> MSSQL (или MySQL) ?
Друзья, прошу прощения за возможно глупый вопрос: а возможно ли как то Excel подключить напрямую к БД?
ну тоесть чтоб при открытии определённого Excel документа, шёл коннект к БД, ну и напрямую заполнялись поля в БД из Excel (конечено же при условии соответствии формата введённой инфы и полей в базе)

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
05.08.2013, 12:22
    #38354911
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
Да, возможно.
Создай соотв. подключение (Панель управления - источники данных), после чего подключись к созданному источнику (Импорт внешних данных - Создать запрос).
...
Рейтинг: 0 / 0
05.08.2013, 15:53
    #38355359
Excel <--> MSSQL (или MySQL) ?
и что, прям можно будет делать онлайн инсерт\апдейт БД из документа?
...
Рейтинг: 0 / 0
05.08.2013, 16:25
    #38355406
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
Таке ты хочешь не просто подключиться к серверу, а ещё и использовать приложение (Ворд, Эксель) как интерфейс к БД? Ну тогда ответ немного иной - да, возможно, но не так просто, как тебе хочется. Придётся писАть полноценную программу на VBA... имхо.

А нахрена?
...
Рейтинг: 0 / 0
06.08.2013, 10:28
    #38356142
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
да хрен знает, нахрена :) Заказщик попросил.
хотя вот токо сёдня узнал новую инфу: достаточно чтоб апдейт\инсерт в БД происходил раз в день.
на счёт VBA грустно... :) так как совсем не знаю его... но если укажете ссылочки на примеры, или что то подобной, с радостью освою.
...
Рейтинг: 0 / 0
06.08.2013, 13:33
    #38356524
MX-9
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
J_Mnemonicда хрен знает, нахрена :) Заказщик попросил.
хотя вот токо сёдня узнал новую инфу: достаточно чтоб апдейт\инсерт в БД происходил раз в день.
на счёт VBA грустно... :) так как совсем не знаю его... но если укажете ссылочки на примеры, или что то подобной, с радостью освою.

.. ты хочешь не просто подключиться к серверу, а ещё и использовать Эксель как интерфейс к БД?

Работаем с такой самопальной системой достаточно долго.
Интерактивная связь клиентов с единой общей базой данных - и через интернет тоже.
Клиенты сидят на EXCEL.

Скорость - обьемы - журналирование - все ok.

Можем поучаствовать в вашем проекте.

================
...
Рейтинг: 0 / 0
06.08.2013, 13:37
    #38356535
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
MX-9,
Вы предлагаете передать вам свою работу? )
...
Рейтинг: 0 / 0
06.08.2013, 13:52
    #38356563
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
кусок кода работает с данными на листах экселя
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Set shSrc = Application.ActiveWorkbook.Sheets("ААААА")
  Set shDst = Application.ActiveWorkbook.Sheets("ИИИИИ")
  
  
   i = 5
  statCnt = 0
  While shSrc.Cells(1, i).Value <> 0
    i = i + 1
    statCnt = statCnt + 1
  Wend
  
      


кусочки кода тянут из оракла в акс через адо, заливают назад через хранимку.....
Код: vbnet
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.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
Public Function MakeConn(bd As String, uid As String, pwd As String)
  
  Dim conn As New ADODB.Connection
  conn.Open connstr(bd, uid, pwd), uid, pwd
  Set MakeConn = conn
  
End Function


Public Sub Fill_Table_OraQuery(p_table As String, p_conn As ADODB.Connection, p_sql As String)
  ' дольем таблицу аксеса из ораклового запроса, без очистки
  
  ' выполним запрос
  Dim rs As ADODB.Recordset
  Set rs = p_conn.Execute(p_sql)

  Dim mydb As Database
  Set mydb = Application.CurrentDb
  ' откроем финальную таблицу для записи
   Dim dst_rs As DAO.Recordset
   Set dst_rs = mydb.OpenRecordset(p_table, dbOpenDynaset)


   Dim fnames As Variant
   Dim fld_count As Integer
   fld_count = rs.Fields.Count
      
   ' Создаем список полей
   Dim srcFlds(1 To 100) As ADODB.Field
   Dim dstFlds(1 To 100) As DAO.Field
   Dim i As Integer
   
   For i = 1 To fld_count
     Set srcFlds(i) = rs.Fields(i - 1)
     Set dstFlds(i) = dst_rs.Fields(rs.Fields(i - 1).Name)
   Next

   ' в цикле по набору вставляем записи
   While Not rs.EOF
    dst_rs.AddNew
    For i = 1 To fld_count
      dstFlds(i).Value = srcFlds(i).Value
    Next
    dst_rs.Update
    rs.MoveNext
   Wend

   ' закроем все открытое
   dst_rs.Close
   Set dst_rs = Nothing
   rs.Close
   Set rs = Nothing
   Set mydb = Nothing
End Sub

Private Sub btn_ora_process_Click()

  Dim l_waf As Form
  Set l_waf = Me.work_area_fld.Form
  
  Dim rs As DAO.Recordset
  Dim i As Integer
  Set rs = filtered_recordset()
  
  If Not (rs.BOF And rs.EOF) Then
     rs.MoveFirst
  End If
  
  Dim conn As New ADODB.Connection
  Set conn = utils.MakeConn("КККК", "ККККК", "КККККК")
    
  Dim l_cnt As Integer
  l_cnt = 0
     
  'Пройдем по записям, зальем в оракл помеченное для исправления
  While Not rs.EOF
    If rs!check_flg = 2 Then
       Dim act As String
       Dim l_b As String
       If rs!b Then
         l_b = 1
       Else
         l_b = 0
       End If
       
       l_cnt = l_cnt + 1
       
       act = "begin xxyyzz.update_eeee(p_id =>'" & rs!id _
       & "', p_c=>  '" & rs!my_c _
       & "', p_a => '" & rs!my_a & "' , p_b> '" & l_b & "'); end;"
       conn.Execute act
       
       rs.Edit
          rs.Fields("check_flg").Value = 4
       rs.Update
    End If
    
    rs.MoveNext
  Wend
  
  conn.Close
  
  Set conn = Nothing
  Set rs = Nothing
  
  Me.work_area_fld.Form.Refresh
  MsgBox ("Исправлено " & l_cnt)
End Sub
    
...
Рейтинг: 0 / 0
06.08.2013, 14:13
    #38356617
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
Vladimir Baskakov,

Спасибо большое! Правда код для меня почти незнаком но буду пытаться разбираться. а то что у меня база на MYSQL сильно будет влиять на код?
...
Рейтинг: 0 / 0
06.08.2013, 14:24
    #38356639
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
я правильно понял? у вас данные из оракла тянуться в аксес а из аксеса уже в Excel?
а сохраняются в бд, путём вызова хранимки "update_eeee"

и всё это в макросах EXCEL документа написано?
...
Рейтинг: 0 / 0
06.08.2013, 15:39
    #38356821
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
Всегда умиляет наивность некоторых людей, которые считают, что можно написать сложную программу, абсолютно не разбираясь в программировании.

Ничего личного.
...
Рейтинг: 0 / 0
06.08.2013, 15:48
    #38356853
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
F,

Вы правы. это действительно смешно ) но я честно говоря и не надеюсь что будет легко. Просто пытаюсь узнать максимум инфы, которая поможет для старта.
...
Рейтинг: 0 / 0
06.08.2013, 18:12
    #38357263
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
Для старта изучают основы программирования, а не пишут профессиональные программы.
...
Рейтинг: 0 / 0
06.08.2013, 18:24
    #38357292
J_Mnemonic
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
F,
ну. плавать иногда учатся тоже когда падают в речку. думаю было бы глупо отказаться от заработка, не попробовав. тем более что в программировании я не новичёк. просто с VB и его синтаксисом не знаком.
...
Рейтинг: 0 / 0
06.08.2013, 18:36
    #38357307
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
Так и начинайте с более подходящих для задачи средств.
...
Рейтинг: 0 / 0
14.08.2013, 12:31
    #38365965
Vladimir Baskakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel <--> MSSQL (или MySQL) ?
J_Mnemonicя правильно понял? у вас данные из оракла тянуться в аксес а из аксеса уже в Excel?
а сохраняются в бд, путём вызова хранимки "update_eeee"

и всё это в макросах EXCEL документа написано?
)))))) у меня тянется отовсюду во все ))))))
Коннект к базе и проход по запросу не зависит - эксель или акс, если вытягивать в них. Адо - оно и в африке Адо...., и оно не слишком сильно зависит от того - к какой базе цепляться....
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel <--> MSSQL (или MySQL) ? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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