Что нового

Ошибка при получение данных через ADOBD(Oracle)

PoleschenkoKV

Новичок
Сообщения
4
Репутация
0
Добрый день.
При выполнении скрипта(ниже) вылетает с ошибкой(Error^ The requested action with this object has failed) при переходе ко второй записи(первая запись нормально отрабатывает). Подскажите из-за чего это происходит.

Код:
$ado = ObjCreate( "ADODB.Connection" )
$ado.ConnectionString =("Provider='OraOLEDB.Oracle';Data Source='vologda';User Id='user';Password='pass';") 
$ado.Open 
	
$adors = ObjCreate( "ADODB.RecordSet" ) 
$adors.ActiveConnection = $ado
	
$adors.Source = "select def from note_types where nttp_id > 1"
$adors.Open
$rez = $adors
	
$i = 0
While Not $adors.EOF
	
	MsgBox(0, "Info", $adors.Fields($i).Value)
	$adors.MoveNext
	$i = $i + 1
	
Wend

$adors.Close
$ado.Close
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Скажу сразу - такую технологию ;) не знаю, т.е. что куда и откуда пишется.

Но могу предположить, что:
Код:
$adors.Source = "select def from note_types where nttp_id > 1"
...............
$i = 0
While Not $adors.EOF
    
    MsgBox(0, "Info", $adors.Fields($i).Value)
    $adors.MoveNext
    $i = $i + 1
    
Wend


Ты в запросе "$adors.Source" выводишь одно поле "def".
А в выводе "Fields($i)" у тебя получается, что показать поле следующее... т.е. не "def"

Это с намеком может как-нибудь так:
Код:
While Not $adors.EOF
    
    MsgBox(0, "Info", $adors.Fields(0).Value)
    $adors.MoveNext
Wend


PS:
А есть функция с выводом сколько элементов/записей "$adors" и полей в одной записи "$adors.Fields" ?
Где-то тут на просторах инета нашел, что:
Код:
MoveNext(); //Переходим к след. записи
 

XpycT

Скриптер
Сообщения
380
Репутация
133
PoleschenkoKV [?]
вылетает с ошибкой
Вылетает потому что у вас в запросе идет запрос только одного значения / поля ("def"), а в цикле после первого прохода ($i увеличиваеться на 1) у вас идет запрос ко второму полю/столбцу ($adors.Fields($i).Value равносильно $adors.Fields(1).Value), а такого поля не существует, что и ведет к ошибке

Попробуй так
Код:
$ado = ObjCreate( "ADODB.Connection" )
$ado.ConnectionString =("Provider='OraOLEDB.Oracle';Data Source='vologda';User Id='user';Password='pass';")
$ado.Open

$adors = ObjCreate( "ADODB.RecordSet" )
$adors.ActiveConnection = $ado

$adors.Source = "select def from note_types where nttp_id > 1"
$adors.Open
$rez = $adors

While Not $adors.EOF
    MsgBox(0, "Info", $adors.Fields(0).Value)
    $adors.MoveNext
Wend

$adors.Close
$ado.Close


---Zak--- [?]
А есть функция с выводом сколько элементов/записей
$adors.RecordCount - Количество записей / строк
$adors.Fields.Count - Количество полей / столбцов
 

elshir

Новичок
Сообщения
1
Репутация
0
Добрый день!
Вопрос в следующем, есть скрипт подключения к Oracle c текстом выполняемого запроса.

Код:
$s = "with bumm as (select to_char (dzins, 'dd.mm.yyyy hh24:mi:ss') ins, to_char (dzupd, 'dd.mm.yyyy hh24:mi:ss') chg, " & _
"bumid, bumgrundnam, substr(artid, 9, 14) art, tenam, plnam, aufgrpnam, aufid, aupnr, weaid, wepnr, bumparwws, bummgbstkto, " & _
"namins, namupd from GLJ_ROD_TST.BUM_t where bum_t.bumgrundnam in (select BUMGRUND_T.bumgrundnam from GLJ_ROD_TST.BUMGRUND_T " & _
"where BUMGRUND_T.rechtnam <> 'LEVEL3')) select * from bumm, GLJ_ROD_TST.BUMGRUND_T where bumm.bumgrundnam = bumgrund_t.bumgrundnam"
$ado = ObjCreate( "ADODB.Connection" )
$ado.ConnectionString =("Provider='OraOLEDB.Oracle';Data Source='source';User Id='user';Password='pass';")
$ado.Open
$adors = ObjCreate( "ADODB.RecordSet" )
$adors.ActiveConnection = $ado
$adors.Source = $s
$adors.Open




 $file = FileOpen("out.txt", 2)
While Not $adors.EOF
    $a = "'" & $adors.Fields(0).Value & "','" & $adors.Fields(1).Value & "','" & $adors.Fields(2).Value & "','" & $adors.Fields(3).Value & "','" & $adors.Fields(4).Value & "','" & $adors.Fields(5).Value & "','" & $adors.Fields(6).Value & "','" & $adors.Fields(7).Value & "','" & $adors.Fields(8).Value & "','" & $adors.Fields(9).Value & "','" & $adors.Fields(10).Value & "','" & $adors.Fields(11).Value & "','" & $adors.Fields(12).Value & "','" & $adors.Fields(13).Value & "','" & $adors.Fields(14).Value & "','" & $adors.Fields(15).Value & "'"
FileWrite ($file, $a & @CRLF)


    $adors.MoveNext
Wend
$adors.Close
$ado.Close
FileClose ($file)

Если запрос содержит больше символов - при выполнении из скрипта возникает ошибка. А есть запросы и по 50 строк. Как с этим бороться?
 
Верх