powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставка данных построчно из хранимой процедуры.
11 сообщений из 11, страница 1 из 1
Вставка данных построчно из хранимой процедуры.
    #35676832
Здравствуйте, подскажите пожалуйста решение такого вопроса.
Мне необходимо осуществить вывод в Ексель построчно данных, которые возвращает хранимая процедура. На данный момент у меня сделано так:

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


Но в данном случае он вставляет сразу все данные. А мне нужно перед вставкой пробегать все значения, выделяя нужные цветом и вставляя строки с подитогами.
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #35677328
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открывай школьный учебник информатики, читай про циклы.
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #35677472
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlОткрывай школьный учебник информатики, читай про циклы.
Во как! Неужели в школе программированию учат, да еще и как циклы писать?
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #35677680
sitih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 присваивается значение номера строки где он нашел искомую информацию.
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #35677681
sitih
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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), не вам адресовано, адресовано Максиму Леонидовичу прошу прощения.
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #35678144
Вы меня не правильно поняли. как циклы писать, я знаю. Насколько я понял QueryTables сразу выводит данные на страницу из хр. процедуры и потом надо пробегать уже каждую строку непосредственно на странице (двойная работа какая-то), а я хочу сначала выводить данные из процедуры в переменную (типа рекордсета чтоли) и уже потом выводить их на страницу в каком мне нужно виде.
P.S.: отдельное пасиба White Owl. твоя помощь неоценима и хорошо что есть такие как ты.
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #35678634
Всё... вопрос разрешился. Всем спасибо кто откликнулся.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Вставка данных построчно из хранимой процедуры.
    #38342478
kain111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВы меня не правильно поняли. как циклы писать, я знаю. Насколько я понял QueryTables сразу выводит данные на страницу из хр. процедуры и потом надо пробегать уже каждую строку непосредственно на странице (двойная работа какая-то), а я хочу сначала выводить данные из процедуры в переменную (типа рекордсета чтоли) и уже потом выводить их на страницу в каком мне нужно виде.
извиняюсь что апаю старый топик. но интересует именно этот вопрос.
можно ли получить коллекцию не выводя ее на страницу?
какой метод если он есть лучше использовать ?
или все банально бежать циклом по ячейкам результата ?
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #38342521
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kain111,

Конечно можно, через recordset.

Вот тут описано как им воспользоваться для разных типов:
http://support.microsoft.com/kb/257819/en-us

А вот здесь пример как пробежаться по записям:
http://stackoverflow.com/questions/7099818/vba-deleting-records-by-iterating-through-adodb-result-set
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #38342530
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Dim cn As Object, rs As Object
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open "строка подключения...."
set rs = cn.Execute "exec хранимка параметры"
Do Until rs.EOF
  Msgbox rs("поле1")+ rs("поле2")
  rs.MoveNext
Loop
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
...
Рейтинг: 0 / 0
Вставка данных построчно из хранимой процедуры.
    #38345698
kain111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо всем ответившим, я извиняюсь, но у меня вместо ADO используется WEB запрос и в нем не найдя как получить данные не выводя на таблицу я сделал цикл.
Довольно забавное получилось решение из за требований ИТ отдела. Запросы к базе через веб идут выполняя PHP код на стророне сервера передаваемые через параметры. Есть даже запросы удаления данных. Вся работа происходит через созданные QueryTables которые берут данные из веб. затем переопределяется конект и обновляются данные. Такого вида
Код: vbnet
1.
2.
 Worksheets("list").QueryTables("assort_by_sreg_kanal_debitor").Connection = "URL;http://app10/mssql_prc_assort_by_sreg_kanal_debitor.php?sreg=" & getSreg & "&kanal=" & getKanal & "&debitor=" & getDebitor
    Worksheets("list").QueryTables("assort_by_sreg_kanal_debitor").Refresh


ну и цикл по области
Код: vbnet
1.
2.
3.
4.
5.
6.
    Count = 1
    Do While Not Worksheets("list").Cells(Count, 6).Value = ""
    ReDim Preserve assort(Count)
    assort(Count).assort = Worksheets("list").Cells(Count, 6).Value
    Count = Count + 1
    Loop
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставка данных построчно из хранимой процедуры.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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