Вверх ↑
Этот топик читают: Гость
Ответов: 53
Рейтинг: 3
#1: 2022-08-18 11:12:41 ЛС | профиль | цитата
Добрый день. Перечитал схожие темы, пересмотрел примеры, но еще больше запутался.

Есть база Oracle, на ПК установлен Oracle Runtime. Больше ничего установить нельзя, это важный момент.
Также имеется утилита, которая лазит в базу и сравнивает значения из двух таблиц.
Пытаюсь написать ей замену, так как она устарела и не работает на Win10.

Для подключения к базе используется строка
Provider=MSDAORA.1;Password=qwerty;User ID=baseuser;Data Source=BAZA1;Persist Security Info=True

Подскажите, как средствами HiASM подключиться к базе, исходя из имеющихся данных?
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 670
Рейтинг: 140
#2: 2022-08-18 11:36:52 ЛС | профиль | цитата
De_Cadanz писал(а):
Подскажите, как средствами HiASM подключиться к базе, исходя из имеющихся данных?

Запусти схему на компьютере с базой Oracle. Загорается светодиод?

Add(MainForm,2953706,210,203)
{
Width=364
Height=159
Point(onClose)
link(onCreate,2316622:doOpen,[])
link(onClose,2316622:doClose,[])
}
Add(DS_OLEDB,2316622,273,217)
{
Name="asdf"
Driver="Provider=MSDAORA.1;Password=qwerty;User ID=baseuser;Data Source=BAZA1;Persist Security Info=True"
Point(onError)
link(onCreate,4684769:doChangeValue,[])
link(onError,9724234:doText,[(340,230)(340,272)])
}
Add(LED,4684769,350,217)
{
Left=15
Top=25
}
Add(Label,9724234,350,266)
{
Left=90
Top=30
Caption=""
}

карма: 14

1
Голосовали:De_Cadanz
Ответов: 53
Рейтинг: 3
#3: 2022-08-18 11:49:22 ЛС | профиль | цитата
Gunta писал(а):
Запусти схему на компьютере с базой Oracle. Загорается светодиод?

Если имелось в виду запустить на сервере с базой - то меня туда никто не пустит.
Если же на рабочем компе - не загорается ничего. Долго думает и выдаёт ошибку -2147467259.
карма: 1

0
Ответов: 670
Рейтинг: 140
#4: 2022-08-18 12:01:48 ЛС | профиль | цитата
De_Cadanz писал(а):
Если имелось в виду запустить на сервере с базой - то меня туда никто не пустит.

Тогда источник данных должен выглядеть как-то так - Data Source=username/password@myserver/myservice:dedicated/instancename;

Откада взята строчка подключения из перввого поста(Provider=MSDAORA.1;Password=qwerty;User ID=baseuser;Data Source=BAZA1;Persist Security Info=True)?

А у тебя на PC установлен клиент Oracle?

Редактировалось 1 раз(а), последний 2022-08-18 12:07:00
карма: 14

0
Ответов: 53
Рейтинг: 3
#5: 2022-08-18 12:33:39 ЛС | профиль | цитата
Gunta писал(а):
Откада взята строчка подключения из перввого поста(Provider=MSDAORA.1;Password=qwerty;User ID=baseuser;Data Source=BAZA1;Persist Security Info=True)?

Из udl-файла упомянутой утилиты. Которая запускается с клиентских компов, не с сервера.
Gunta писал(а):
А у тебя на PC установлен клиент Oracle?

Да, естественно.

Редактировалось 1 раз(а), последний 2022-08-18 12:34:08
карма: 1

0
Ответов: 670
Рейтинг: 140
#6: 2022-08-18 14:06:20 ЛС | профиль | цитата
De_Cadanz, Попробуй вместо Provider=MSDAORA.1 использовать Provider=msdaora; или строку подключения
Provider=OraOLEDB.Oracle; (https://www.connectionstrings.com/oracle-provider-for-ole-db-oraoledb/)

Возможно, проблема связана с версией установленного клиента 32/64
https://overcoder.net/q/1667500/%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D1%89%D0%B8%D0%BA-msdaora1-%D0%BD%D0%B5-%D0%B7%D0%B0%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD-%D0%BD%D0%B0-%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%BC-%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%B5

https://community.oracle.com/tech/developers/discussion/1022162/msdaora-provider-is-not-registered-on-local-machine
карма: 14

0
Ответов: 53
Рейтинг: 3
#7: 2022-08-18 14:17:47 ЛС | профиль | цитата
Gunta писал(а):
De_Cadanz, Попробуй вместо Provider=MSDAORA.1 использовать Provider=msdaora; или строку подключения

Простите меня, недалёкого. Я ж в ваш пример не вписал реальные данные базы. Всё подключилось. Спасибо, буду дальше разбираться.
карма: 1

0
Ответов: 53
Рейтинг: 3
#8: 2022-08-18 17:46:45 ЛС | профиль | цитата
Пытаюсь получить значение с помощью элемента DSC_Query, запрос вида SELECT FROM WHERE, выдает ошибку -2147217913.

Add(MainForm,2953706,28,245)
{
Width=516
Height=382
Point(onClose)
link(onCreate,9293760:doOpen,[])
link(onClose,9293760:doClose,[])
}
Add(DS_OLEDB,9293760,91,259)
{
Name="asdf"
Driver="Provider=MSDAORA.1;Password=qwert;User ID=user;Data Source=PEOPLE;Persist Security Info=True"
Point(onError)
link(onCreate,409024:doQuery,[(149,265)(149,398)])
link(onError,10419656:doText,[])
}
Add(Label,10419656,273,266)
{
Left=90
Top=30
Width=40
Height=17
Caption="OnError"
}
Add(Memo,1389694,294,350)
{
Left=10
Top=75
Width=240
Height=95
}
Add(Memo,9764813,305,438)
{
Left=10
Top=185
Width=240
Height=95
}
Add(DSC_Query,409024,175,392)
{
SQL="SELECT NAME FROM PEOPLE WHERE NUMBER = 2290"
DSManager="asdf"
link(onQuery,9764813:doAdd,[(256,398)(256,444)])
link(onError,1389694:doAdd,[(251,412)(251,356)])
}

карма: 1

0
Ответов: 670
Рейтинг: 140
#9: 2022-08-18 18:06:04 ЛС | профиль | цитата
De_Cadanz писал(а):
запрос вида SELECT FROM WHERE, выдает ошибку -2147217913.

А тип поля "NUMBER" точно intenger? И не забывай в конце запроса ставить точку с запятой.
Попробуй так

Add(MainForm,5663794,126,91)
{
Width=516
Height=382
Point(onClose)
link(onCreate,9293760:doOpen,[])
link(onClose,9293760:doClose,[])
}
Add(DS_OLEDB,9293760,189,105)
{
Name="asdf"
Driver="Provider=MSDAORA.1;Password=qwert;User ID=user;Data Source=PEOPLE;Persist Security Info=True"
Point(onError)
link(onCreate,409024:doQuery,[])
link(onError,10419656:doText,[(263,118)(263,174)])
}
Add(Label,10419656,329,168)
{
Left=90
Top=30
Width=40
Height=17
Caption="OnError"
}
Add(Memo,1389694,420,161)
{
Left=10
Top=75
Width=240
Height=95
}
Add(Memo,9764813,420,105)
{
Left=10
Top=185
Width=240
Height=95
}
Add(DSC_Query,409024,329,105)
{
SQL="SELECT NAME\r\nFROM PEOPLE\r\nWHERE NUMBER = '2290';\r\n"
DSManager="asdf"
link(onQuery,9764813:doAdd,[])
link(onError,1389694:doAdd,[(410,125)(410,167)])
}

карма: 14

0
Ответов: 53
Рейтинг: 3
#10: 2022-08-19 10:30:19 ЛС | профиль | цитата
А так выдаёт ошибку -2147217900.
карма: 1

0
Ответов: 670
Рейтинг: 140
#11: 2022-08-19 10:50:35 ЛС | профиль | цитата
De_Cadanz писал(а):
А так выдаёт ошибку -2147217900.

https://support.microsoft.com/ru-ru/topic/%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-%D0%B2%D0%BE-%D0%B2%D1%80%D0%B5%D0%BC%D1%8F-%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-2147217900-80040e14-83ef16fe-3867-36e2-b201-5c71b74ff1dc

Попробуй запрос без оператора WHERE
Add(MainForm,5663794,392,77)
{
Width=516
Height=382
Point(onClose)
link(onCreate,9293760:doOpen,[])
link(onClose,9293760:doClose,[])
}
Add(DS_OLEDB,9293760,455,91)
{
Name="asdf"
Driver="Provider=MSDAORA.1;Password=qwert;User ID=user;Data Source=PEOPLE;Persist Security Info=True"
Point(onError)
link(onCreate,409024:doQuery,[])
link(onError,10419656:doText,[(529,104)(529,160)])
}
Add(Label,10419656,595,154)
{
Left=90
Top=30
Width=40
Height=17
Caption="OnError"
}
Add(Memo,1389694,658,147)
{
Left=10
Top=75
Width=240
Height=95
}
Add(Memo,9764813,728,91)
{
Left=10
Top=185
Width=240
Height=95
}
Add(DSC_Query,409024,595,91)
{
SQL="SELECT NAME\r\nFROM PEOPLE;\r\n"
DSManager="asdf"
link(onQuery,5894116:doStr,[])
link(onError,1389694:doAdd,[(648,111)(648,153)])
}
Add(MT_String,5894116,672,91)
{
link(onResult,9764813:doAdd,[])
}


Редактировалось 1 раз(а), последний 2022-08-19 11:00:09
карма: 14

0
Ответов: 53
Рейтинг: 3
#12: 2022-08-19 11:13:44 ЛС | профиль | цитата
Спасибо, буду разбираться.

--- Добавлено в 2022-08-19 11:34:18

Gunta писал(а):
Попробуй запрос без оператора WHERE

Там несколько сотен тысяч строк, оно просто виснет.
Если дописать LIMIT 10, то та же ошибка.

Редактировалось 2 раз(а), последний 2022-08-19 11:35:53
карма: 1

0
Ответов: 670
Рейтинг: 140
#13: 2022-08-19 12:09:40 ЛС | профиль | цитата
De_Cadanz писал(а):
Если дописать LIMIT 10, то та же ошибка.


SELECT NAME
FROM PEOPLE
FETCH FIRST 10 ROWS ONLY;
карма: 14

0
13
Сообщение
...
Прикрепленные файлы
(файлы не залиты)