Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставка данных построчно из хранимой процедуры. / 11 сообщений из 11, страница 1 из 1
26.11.2008, 15:06
    #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
26.11.2008, 17:27
    #35677328
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка данных построчно из хранимой процедуры.
Открывай школьный учебник информатики, читай про циклы.
...
Рейтинг: 0 / 0
26.11.2008, 18:13
    #35677472
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка данных построчно из хранимой процедуры.
White OwlОткрывай школьный учебник информатики, читай про циклы.
Во как! Неужели в школе программированию учат, да еще и как циклы писать?
...
Рейтинг: 0 / 0
26.11.2008, 20:40
    #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
26.11.2008, 20:42
    #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
27.11.2008, 08:26
    #35678144
Вставка данных построчно из хранимой процедуры.
Вы меня не правильно поняли. как циклы писать, я знаю. Насколько я понял QueryTables сразу выводит данные на страницу из хр. процедуры и потом надо пробегать уже каждую строку непосредственно на странице (двойная работа какая-то), а я хочу сначала выводить данные из процедуры в переменную (типа рекордсета чтоли) и уже потом выводить их на страницу в каком мне нужно виде.
P.S.: отдельное пасиба White Owl. твоя помощь неоценима и хорошо что есть такие как ты.
...
Рейтинг: 0 / 0
27.11.2008, 11:53
    #35678634
Вставка данных построчно из хранимой процедуры.
Всё... вопрос разрешился. Всем спасибо кто откликнулся.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.07.2013, 16:29
    #38342478
kain111
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вставка данных построчно из хранимой процедуры.
авторВы меня не правильно поняли. как циклы писать, я знаю. Насколько я понял QueryTables сразу выводит данные на страницу из хр. процедуры и потом надо пробегать уже каждую строку непосредственно на странице (двойная работа какая-то), а я хочу сначала выводить данные из процедуры в переменную (типа рекордсета чтоли) и уже потом выводить их на страницу в каком мне нужно виде.
извиняюсь что апаю старый топик. но интересует именно этот вопрос.
можно ли получить коллекцию не выводя ее на страницу?
какой метод если он есть лучше использовать ?
или все банально бежать циклом по ячейкам результата ?
...
Рейтинг: 0 / 0
24.07.2013, 16:54
    #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
24.07.2013, 16:57
    #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
26.07.2013, 17:10
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Вставка данных построчно из хранимой процедуры. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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