Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите с макросом... / 25 сообщений из 50, страница 1 из 2
07.07.2010, 18:09
    #36728741
malvas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Добрый день!
Мне необходимо сделать следующее.
У меня есть таблица на SQL Server. Данные из этой таблицы надо переместить в определенные ячейки Excel, потом они пересчитаются с помощью формул и уже из посчинанных ячеек в Excele с результатом их надо переместить в определенные пустые столбцы того же SQL Server (пустые поля в базе данных будут созданы для этих целей). Если знаете, подскажите пожалуйста или подскажите где посмотреть... Я даже не знаю с чего начать (думаю надо писать макрос)...
Заранее спасибо!!!
...
Рейтинг: 0 / 0
07.07.2010, 18:11
    #36728749
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
malvas,

А какие знания имеются?
Как соединиться с сервером?
Как работать с ячейками?
...
Рейтинг: 0 / 0
07.07.2010, 18:13
    #36728758
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
> Автор: malvas
> Добрый день!
> Мне необходимо сделать следующее.

Вот код для получения данных
из MSSQL и разбрасывания полученных данных по ячейкам. подумай, исправь под свои нужды и на этой основе напиши код
получения нужных данных из ячеек, составление запроса на вставку и отправку этого запроса на сервер.
Вообщем обычная обыденщина

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
07.07.2010, 19:16
    #36728906
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
этим навеяло...
А нужен ли экселевский файл как результат?
SQL Server обладает достаточно мощными средствами, чтобы обрабатывать данные "не выходя из дома", в смысле прямо на сервере.

А то помню тут дама пыталась достать данные с сервера, чтобы высчитать в страшном цикле на VB среднеквадратичное отклонение и была очень рада, когда я ей подсказал, что в SQL это делается одной-единственной(!) функцией
...
Рейтинг: 0 / 0
09.07.2010, 11:17
    #36732027
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Игорь Горбонос
> Автор: malvas
> Добрый день!
> Мне необходимо сделать следующее.

Вот код для получения данных
из MSSQL и разбрасывания полученных данных по ячейкам. подумай, исправь под свои нужды и на этой основе напиши код
получения нужных данных из ячеек, составление запроса на вставку и отправку этого запроса на сервер.
Вообщем обычная обыденщина




Игорь, добрый день!
Не могу разобраться, почему он ругается на строку объявления переменной -
Dim cn As New ADODB.Connection
В чем может быть проблема ?
...
Рейтинг: 0 / 0
09.07.2010, 11:20
    #36732035
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
stavdius,

Project - References -
найти и подключить библиотеку Micrisoft ActiveX Data Objects
...
Рейтинг: 0 / 0
09.07.2010, 11:25
    #36732051
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Shocker.ProProject - References -
в экселе: Tools - References -
...
Рейтинг: 0 / 0
09.07.2010, 11:27
    #36732061
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Shocker.Pro,
Но там этого меню нет, это не VB Net, а VB для Ecxel
...
Рейтинг: 0 / 0
09.07.2010, 11:28
    #36732063
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Shocker.Pro,

Спасибо, нашел.
но он не активен... ((
Что о нужно включить ?
...
Рейтинг: 0 / 0
09.07.2010, 11:29
    #36732067
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
stavdiusShocker.Pro,

Спасибо, нашел.
но он не активен... ((
Что о нужно включить ?

Включил МозГ. Работает )
...
Рейтинг: 0 / 0
09.07.2010, 12:16
    #36732232
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Еще один вопрос. Считать данные из БД получилось. В шаблоне Excel зашиваю формулу, к примеру в ячейке D зашита формула - B+C
Мне нужно полученный результат записать в БД.
В цикле вывожу, я так понимаю в этом же цикле, нужно и вставлять данные.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Do Until rs.EOF
        Cells(q,  1 ) = rs.Fields( 0 )
        Cells(q,  2 ) = rs.Fields( 1 )
        Cells(q,  3 ) = rs.Fields( 2 )
        Cells(q,  4 ) = rs.Fields( 3 )
        Cells(q,  5 ) = rs.Fields( 4 )
        Cells(q,  6 ) = rs.Fields( 5 )
        Cells(q,  7 ) = rs.Fields( 6 )
        Cells(q,  8 ) = rs.Fields( 7 )
        Cells(q,  9 ) = rs.Fields( 8 )
        Cells(q,  10 ) = rs.Fields( 9 )
        Cells(q,  11 ) = rs.Fields( 10 )
        Cells(q,  12 ) = rs.Fields( 11 )
        Cells(q,  13 ) = rs.Fields( 12 )
        Cells(q,  14 ) = rs.Fields( 13 )
        Cells(q,  15 ) = rs.Fields( 14 )
        Cells(q,  16 ) = rs.Fields( 15 )
        Cells(q,  17 ) = rs.Fields( 16 )
        q = q +  1 
        rs.MoveNext
    Loop
...
Рейтинг: 0 / 0
09.07.2010, 12:27
    #36732274
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
> Автор: stavdius
> Еще один вопрос. Считать данные из БД получилось. В шаблоне Excel зашиваю формулу, к примеру в ячейке D зашита
> формула - B+C
> Мне нужно полученный результат записать в БД.

> В цикле вывожу
Замени на:
Код: plaintext
1.
2.
3.
4.
5.
6.
Do Until rs.EOF
    For i =  1  To  16  ' или rs.Fields.Count
        Cells(q, i) = rs.Fields(i -  1 )
    Next i
    q = q +  1 
    rs.MoveNext
Loop

> я так понимаю в этом же цикле, нужно и вставлять данные.

Не понял вопроса
Или ты спрашиваешь что после вставки данных можно сразу и забирать данные??
Это отсюда не видно. Потому что расчет может вестись по всем данным из рекордсета.
Если брать за основу твой пример с формулой B+C то здесь будет зависить от того какое второе слагаемое. Если вторым
слагаемым стоит простое число, то да - забирать можно сразу, а если в ячейку второго слагаемого будет записыватся число
из рекордсета, то нет - забирать нельзя пока не будут прописанны оба слагаемых :)

И это сложение можно было сделать прямо на сервере, не вытаскивая данные в ексел :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.07.2010, 12:55
    #36732347
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Да, считали данный в ячейку А1 = 2, В1=2 - а в ячейке D1 сложили А1+В1 = 4
Значение 4 нужно записать в БД.
И так далее построчно
...
Рейтинг: 0 / 0
09.07.2010, 12:57
    #36732354
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
stavdiusДа, считали данный в ячейку А1 = 2, В1=2 - а в ячейке D1 сложили А1+В1 = 4
Значение 4 нужно записать в БД.
И так далее построчно
это учебное задание что ли?
или на работу устраиваетесь?
...
Рейтинг: 0 / 0
09.07.2010, 12:59
    #36732359
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Shocker.ProstavdiusДа, считали данный в ячейку А1 = 2, В1=2 - а в ячейке D1 сложили А1+В1 = 4
Значение 4 нужно записать в БД.
И так далее построчно
это учебное задание что ли?
или на работу устраиваетесь?

Да нет, работаю )))
Просто первый раз столкнулся с VB в Excel.
Немного программирую в VB Net
...
Рейтинг: 0 / 0
09.07.2010, 13:00
    #36732362
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
stavdiusДа нет, работаю )))
тогда зачем нужен эксель, чтобы сложить два поля БД?
...
Рейтинг: 0 / 0
09.07.2010, 13:04
    #36732383
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
задача какая то мутная у вас. рассказывайте, что вам действительно надо , а не то как вам приснилось, что это можно сделать таким образом
...
Рейтинг: 0 / 0
09.07.2010, 13:05
    #36732390
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Shocker.ProstavdiusДа нет, работаю )))
тогда зачем нужен эксель, чтобы сложить два поля БД?

Давайте по существу...
Я привел пример с двумя полями потому, что я не пойму как записывать в БД рассчитанные значения.
Excel - удобен для аналитики. А в БД у нас сливаются циыфирьки, по которым нужно провести расчет...
...
Рейтинг: 0 / 0
09.07.2010, 13:06
    #36732398
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
stavdiusShocker.ProstavdiusДа нет, работаю )))
тогда зачем нужен эксель, чтобы сложить два поля БД?

Давайте по существу...
Я привел пример с двумя полями потому, что я не пойму как записывать в БД рассчитанные значения.
Excel - удобен для аналитики. А в БД у нас сливаются циыфирьки, по которым нужно провести расчет...


вы опять что-то недоговариваете
...
Рейтинг: 0 / 0
09.07.2010, 13:08
    #36732412
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
stavdius[Давайте по существу...
Я привел пример с двумя полями потому, что я не пойму как записывать в БД рассчитанные значения.
Я вам задал вопрос про наличествующие знания, вы не ответили.
Писать в БД можно по-разному. Можно сформировать и выполнить "insert" на клиенте. Можно выполнить SP на сервере. Какой нужен вариант?
...
Рейтинг: 0 / 0
09.07.2010, 13:10
    #36732421
stavdius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
Konst_OnestavdiusShocker.ProstavdiusДа нет, работаю )))
тогда зачем нужен эксель, чтобы сложить два поля БД?

Давайте по существу...
Я привел пример с двумя полями потому, что я не пойму как записывать в БД рассчитанные значения.
Excel - удобен для аналитики. А в БД у нас сливаются циыфирьки, по которым нужно провести расчет...


вы опять что-то недоговариваете

Делаем расчет доходности проекта.
Исходные данные, у нас заливаются ежедневно джобом на сервере. В итоге, расчет весь находится в ecxel, в него подставляет значения из БД, и рассчитанные значения записываем в БД.
Далее, по этим данным строим сводную таблицу с графиками...
...
Рейтинг: 0 / 0
09.07.2010, 13:11
    #36732424
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
stavdiusKonst_OnestavdiusShocker.ProstavdiusДа нет, работаю )))
тогда зачем нужен эксель, чтобы сложить два поля БД?

Давайте по существу...
Я привел пример с двумя полями потому, что я не пойму как записывать в БД рассчитанные значения.
Excel - удобен для аналитики. А в БД у нас сливаются циыфирьки, по которым нужно провести расчет...


вы опять что-то недоговариваете

Делаем расчет доходности проекта.
Исходные данные, у нас заливаются ежедневно джобом на сервере. В итоге, расчет весь находится в ecxel, в него подставляет значения из БД, и рассчитанные значения записываем в БД.
Далее, по этим данным строим сводную таблицу с графиками...

так , если у вас всё работает, то в чём собственно вопрос?
...
Рейтинг: 0 / 0
09.07.2010, 13:19
    #36732451
malvas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
у нас действительно всё работает но с access, но теперь встала задача сделать подобное с SQL Server.
В access мы делали вот так


Код: 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.
Sub dataaccess()
Dim db As Database
Dim rs As Recordset

Dim Sh As Worksheet
Dim wb As Workbook
Dim s As String
Set Sh = ActiveSheet

Set db = OpenDatabase("D:\Мои документы\BRB\BRB.mdb")
Set rs = db.OpenRecordset("select * from KK10t")

Do While Not rs.EOF
  Sh.Cells( 15 ,  5 ) = rs![limit_usd]
  Sh.Cells( 10 ,  7 ) = rs![product_podname]
  Sh.Cells( 9 ,  7 ) = rs![platsys]
  Sh.Cells( 8 ,  7 ) = rs![podnaim]

 
  Sh.Calculate
  rs.Edit
  rs!IntRate = Sh.Cells( 16 ,  7 )
  rs.Update

rs.MoveNext
Loop
rs.Close
db.Close
End Sub

это я написала упрощенный вариант...
...
Рейтинг: 0 / 0
09.07.2010, 13:21
    #36732457
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
так же почти и будет, только сделайте на ADO, примеров открытия соединения с SQL-сервер и выполнения запросов, получения/одновления рекордсета на форуме полно
...
Рейтинг: 0 / 0
09.07.2010, 13:21
    #36732458
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите с макросом...
malvasу нас действительно всё работает но с access, но теперь встала задача сделать подобное с SQL Server.
Если не заниматься рефакторингом, то ADO пофиг, работать с аксессом или с SQL-сервером. Меняется только строка подключения.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / помогите с макросом... / 25 сообщений из 50, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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