|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
Здравствуйте, подскажите пожалуйста решение такого вопроса. Мне необходимо осуществить вывод в Ексель построчно данных, которые возвращает хранимая процедура. На данный момент у меня сделано так: Beg = CStr(Worksheets("Form").Range("D2").Value) fin = CStr(Worksheets("Form").Range("D4").Value) BegStr = Replace(Beg, ".", "") finStr = Replace(fin, ".", "") newSheetname = "План выпуска " & BegStr & " " & finStr maxsheet = ThisWorkbook.Worksheets.count sqlstring = "exec STD_SN_in_PLAN 62, '" & Beg & "', '" & fin & "'" connstring = БД.GetConnString Worksheets("Plan").Activate Worksheets("Plan").Copy after:=ThisWorkbook.Worksheets(maxsheet) ActiveSheet.Visible = True maxsheet = maxsheet + 1 If newSheetname = "" Then newSheetname = "Лист" & CStr(maxsheet) End If On Error GoTo Er ActiveSheet.Name = newSheetname ActiveSheet.Range("K1").Value = Beg ActiveSheet.Range("N1").Value = fin ActiveSheet.Range("A5").Select With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Selection, Sql:=sqlstring) .FieldNames = False .RefreshStyle = xlInsertDeleteCells .RowNumbers = False .FillAdjacentFormulas = False .RefreshOnFileOpen = False .HasAutoFormat = False .BackgroundQuery = False .TablesOnlyFromHTML = True .SavePassword = True .SaveData = True .Refresh End With Exit Sub Но в данном случае он вставляет сразу все данные. А мне нужно перед вставкой пробегать все значения, выделяя нужные цветом и вставляя строки с подитогами. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 15:06 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
Открывай школьный учебник информатики, читай про циклы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 17:27 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
White OwlОткрывай школьный учебник информатики, читай про циклы. Во как! Неужели в школе программированию учат, да еще и как циклы писать? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 18:13 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
KL (XL), Sheets("Лист1").Activate s = 2 Do Until TextBox3.Text = Cells(s, 1) ' пробегает по колонке пока не найдет текст из текстбокса If Cells(s, 1) = "" Then ' если не нашел, то есть уперся в пустую ячейку, все пробежал, то выполняем действие. Exit Do End If s = s + 1 Loop' если нашел, т.е. цикл остановился то выполняем действие после Loop, в данном случае переменной s присваивается значение номера строки где он нашел искомую информацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 20:40 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
sitihKL (XL), Sheets("Лист1").Activate s = 2 Do Until TextBox3.Text = Cells(s, 1) ' пробегает по колонке пока не найдет текст из текстбокса If Cells(s, 1) = "" Then ' если не нашел, то есть уперся в пустую ячейку, все пробежал, то выполняем действие. Exit Do End If s = s + 1 Loop' если нашел, т.е. цикл остановился то выполняем действие после Loop, в данном случае переменной s присваивается значение номера строки где он нашел искомую информацию. KL (XL), не вам адресовано, адресовано Максиму Леонидовичу прошу прощения. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2008, 20:42 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
Вы меня не правильно поняли. как циклы писать, я знаю. Насколько я понял QueryTables сразу выводит данные на страницу из хр. процедуры и потом надо пробегать уже каждую строку непосредственно на странице (двойная работа какая-то), а я хочу сначала выводить данные из процедуры в переменную (типа рекордсета чтоли) и уже потом выводить их на страницу в каком мне нужно виде. P.S.: отдельное пасиба White Owl. твоя помощь неоценима и хорошо что есть такие как ты. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 08:26 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
Всё... вопрос разрешился. Всем спасибо кто откликнулся. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2008, 11:53 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
авторВы меня не правильно поняли. как циклы писать, я знаю. Насколько я понял QueryTables сразу выводит данные на страницу из хр. процедуры и потом надо пробегать уже каждую строку непосредственно на странице (двойная работа какая-то), а я хочу сначала выводить данные из процедуры в переменную (типа рекордсета чтоли) и уже потом выводить их на страницу в каком мне нужно виде. извиняюсь что апаю старый топик. но интересует именно этот вопрос. можно ли получить коллекцию не выводя ее на страницу? какой метод если он есть лучше использовать ? или все банально бежать циклом по ячейкам результата ? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2013, 16:29 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
kain111, Конечно можно, через recordset. Вот тут описано как им воспользоваться для разных типов: http://support.microsoft.com/kb/257819/en-us А вот здесь пример как пробежаться по записям: http://stackoverflow.com/questions/7099818/vba-deleting-records-by-iterating-through-adodb-result-set ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2013, 16:54 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2013, 16:57 |
|
Вставка данных построчно из хранимой процедуры.
|
|||
---|---|---|---|
#18+
спасибо всем ответившим, я извиняюсь, но у меня вместо ADO используется WEB запрос и в нем не найдя как получить данные не выводя на таблицу я сделал цикл. Довольно забавное получилось решение из за требований ИТ отдела. Запросы к базе через веб идут выполняя PHP код на стророне сервера передаваемые через параметры. Есть даже запросы удаления данных. Вся работа происходит через созданные QueryTables которые берут данные из веб. затем переопределяется конект и обновляются данные. Такого вида Код: vbnet 1. 2.
ну и цикл по области Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.07.2013, 17:10 |
|
|
start [/forum/topic.php?fid=61&msg=35678634&tid=2174640]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 131ms |
0 / 0 |