|
|
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Пишу запрос в TQuery.В запросе завожу переменную :Test.В параметрах TQuery ее определяю, как строку. При попытке выполенения программы пишет, что операция невыполнима. В чем проблема? Запрос: Select * from bbb where aaa = :test Если же вместо ааа подставляю стороковое значение,т.е. aaa = 'строка', то все работает.Что не так, не пойму... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 11:35 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
код в студию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 11:49 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
miksoftкод в студию! Код в TQuery: select l.*, b.FXMM AS FXMMIPB, b.FX AS FXIPB, b.MM AS MMIPB from v_tr_dict_party p, V_TR_LIMIT_CAT_IPBM_NEW l, V_TR_LIMIT_CAT_TO_BANK b where p.ID = l.Party_ID AND l.Entry_Date = (Select max(Entry_Date) from V_TR_LIMIT_CAT_IPBM_NEW where PArty_ID = l.Party_ID) AND p.Party_Name = :test AND p.ID = b.Party_ID ORDER BY p.party Переменная :test. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 12:07 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
да не SQL, а C++ код в студию! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 14:44 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
miksoftда не SQL, а C++ код в студию! А причем здесь С++? Есть запрос в SQL, который описан выше... Там есть переменная :test, которая описывается именно билдером, а не sql.Соответственно эта переменная попадает в свойство TQuery, которое называется parameters.Там я эту переменную и описываю, что она строчная, присваиваю ей значение и тд....До того, чтобы зделать это программно,я еще не дошел, да и смысл, если это и так не работает... Причем протестировал подстановку переменной на Sybase, все работает, а вот на Oracle не пашет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 15:25 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
misternew miksoftда не SQL, а C++ код в студию! А причем здесь С++? Есть запрос в SQL, который описан выше... Там есть переменная :test, которая описывается именно билдером, а не sql.Соответственно эта переменная попадает в свойство TQuery, которое называется parameters.Там я эту переменную и описываю, что она строчная, присваиваю ей значение и тд....До того, чтобы зделать это программно,я еще не дошел, да и смысл, если это и так не работает... Причем протестировал подстановку переменной на Sybase, все работает, а вот на Oracle не пашет... 1. Выкинь BDE и возьми ODAC (или DOA). Эти либы поддерживают много Оракловых полезностей и работают с ним на порядки лучше БиДиЁв. 2. Query->ParamByName('test')->AsString:=YourTestStringValue; Query->Open ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 15:40 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
misternewА причем здесь С++?а вот Тынц уже ответил: Тынц.Query->ParamByName('test')->AsString:=YourTestStringValue;только, если мне память не изменяет, надо писать с двоеточием, т.е. ':test', но тут я не уверен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 16:01 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
miksoft misternewА причем здесь С++?а вот Тынц уже ответил: Тынц.Query->ParamByName('test')->AsString:=YourTestStringValue;только, если мне память не изменяет, надо писать с двоеточием, т.е. ':test', но тут я не уверен не, не надо, оно ж ParamBy Name и BDE тож не надо правильно будет OraQuery->ParamByName('test')->AsString:=YourTestStringValue; OraQuery->Open(); ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 16:05 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Тынц.AsString:=YourЭто что за пассалевские двоеточия !?!?!? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 16:29 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас Тынц.AsString:=YourЭто что за пассалевские двоеточия !?!?!? Posted via ActualForum NNTP Server 1.3 Да.... тлетворное влияние... ( Хорошо хоть не через точку написал. Вот проект до ума доведу и ну её в болото )) Обещаю исправиться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2006, 22:15 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Тынц. miksoft misternewА причем здесь С++?а вот Тынц уже ответил: Тынц.Query->ParamByName('test')->AsString:=YourTestStringValue;только, если мне память не изменяет, надо писать с двоеточием, т.е. ':test', но тут я не уверен не, не надо, оно ж ParamBy Name и BDE тож не надо правильно будет OraQuery->ParamByName('test')->AsString:=YourTestStringValue; OraQuery->Open(); ;) То, что здесь описано - это тоже самое, что указать в свойстве 'Params' компонента TQuery значение параметра test.Только здесь это программно, а там ручками.... Так вот, как я описывал выше, это не работает для Oraсle(почему-то :)), для Sybase работает...Может BDE, не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2006, 09:49 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
misternew Тынц. miksoft misternewА причем здесь С++?а вот Тынц уже ответил: Тынц.Query->ParamByName('test')->AsString:=YourTestStringValue;только, если мне память не изменяет, надо писать с двоеточием, т.е. ':test', но тут я не уверен не, не надо, оно ж ParamBy Name и BDE тож не надо правильно будет OraQuery->ParamByName('test')->AsString:=YourTestStringValue; OraQuery->Open(); ;) То, что здесь описано - это тоже самое, что указать в свойстве 'Params' компонента TQuery значение параметра test.Только здесь это программно, а там ручками.... Так вот, как я описывал выше, это не работает для Oraсle(почему-то :)), для Sybase работает...Может BDE, не знаю... Я так понимаю, что причина кроется в отсутствии кавычек (открывающей ' и закрывающей '). Они - есть обязательный элемент передаваемых данных. Либо надо использовать нативную оракловую функцию приведения к строковому виду (TO_CHAR(...)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2006, 11:00 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Станислав СЯ так понимаю, что причина кроется в отсутствии кавычек (открывающей ' и закрывающей '). Они - есть обязательный элемент передаваемых данных. Либо надо использовать нативную оракловую функцию приведения к строковому виду (TO_CHAR(...)) То есть, например, ты сейчас передаешь: Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2006, 11:04 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Станислав С СС> а должно быть: СС> test='\'bla-bla-bla\''; с каких таких пор с С/С++ строки в одинарные кавычки заключаться стали ? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2006, 11:26 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас Станислав С СС> а должно быть: СС> test='\'bla-bla-bla\''; с каких таких пор с С/С++ строки в одинарные кавычки заключаться стали ? Posted via ActualForum NNTP Server 1.3 Имейте снисхождение... Человек первый день на работе после месячного отпуска... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2006, 12:15 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Станислав СЯ так понимаю, что причина кроется в отсутствии кавычек (открывающей ' и закрывающей '). Они - есть обязательный элемент передаваемых данных. Либо надо использовать нативную оракловую функцию приведения к строковому виду (TO_CHAR(...)) Мысль интересная, но ни с кавычками, ни с TO_CHAR не работает почему-то... :(...Не понимаю в чем глюк.... Обошел это следующим образом, передавая в текст запроса строку,в которую предварительно в нужное место было вставлено необходимое значение, но если запрос будет не маленьким, тогда что?..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 10:39 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
misternew Станислав СЯ так понимаю, что причина кроется в отсутствии кавычек (открывающей ' и закрывающей '). Они - есть обязательный элемент передаваемых данных. Либо надо использовать нативную оракловую функцию приведения к строковому виду (TO_CHAR(...)) Мысль интересная, но ни с кавычками, ни с TO_CHAR не работает почему-то... :(...Не понимаю в чем глюк.... Обошел это следующим образом, передавая в текст запроса строку,в которую предварительно в нужное место было вставлено необходимое значение, но если запрос будет не маленьким, тогда что?..... Насколько "немаленьким"? Oracle легко "переваривает" тексты запросов длиной до 8 кБ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 10:47 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
Ну это понятно, просто не хочется ходить вокруг да около, тем более, если есть стандартный интерфейс и параметры....Для Sybase работает, ORacle не хочет, я бы понял, если б совсем не работало, а тут не пойму в чем дело... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 11:11 |
|
||
|
C++ Builder & Oracle
|
|||
|---|---|---|---|
|
#18+
misternewНу это понятно, просто не хочется ходить вокруг да около, тем более, если есть стандартный интерфейс и параметры....Для Sybase работает, ORacle не хочет, я бы понял, если б совсем не работало, а тут не пойму в чем дело... Посмотри в FAQ в ветке Oracle, как включить трассировку сессии и посмотри текст, который передаётся серверу на обработку. Либо ты что-то не так делаешь, либо его портит BDE. Выложи код, как именно работаешь с запросом. А лучше возьми, всё-таки ODAC или DOA. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2006, 11:32 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=33946245&tid=2030611]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 492ms |

| 0 / 0 |
