Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по запросу в Fox и в Oracle / 10 сообщений из 10, страница 1 из 1
06.05.2010, 16:02
    #36615563
_Margo_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
Добрый день!

Вопрос из разряда найдите отличие.
Но на самом деле я просто уже не знаю что и думать...

Выполняю select.
В Оракле он выполняется и присылает привильный результат.
вот так он выглядит:

Код: plaintext
1.
2.
SELECT ivc_cb.zakaz_str.naim,ivc_cb.zakaz_str.kol,mts.s_edi.naim as ed_izm, ivc_cb.zakaz_str.cena
FROM ivc_cb.zakaz_str, mts.s_edi 
WHERE LTRIM(RTRIM(ivc_cb.zakaz_str.ID_DOC)) = LTRIM(RTRIM('13-5/2010 ')) AND ivc_cb.zakaz_str.id_izm = mts.s_edi.qedi
Вот аналогичный код для fox 9:
Код: plaintext
1.
2.
3.
4.
nom='13-5/2010  '
lnReturn =sqlexec(lnMyConnect,'SELECT ivc_cb.zakaz_str.naim,ivc_cb.zakaz_str.kol,mts.s_edi.naim as ed_izm, ;
ivc_cb.zakaz_str.cena ;
FROM ivc_cb.zakaz_str, mts.s_edi ;
WHERE LTRIM(RTRIM(ivc_cb.zakaz_str.ID_DOC)) = LTRIM(RTRIM(nom)) AND ivc_cb.zakaz_str.id_izm = mts.s_edi.qedi','curs_1')
Но в ответ прилетает -1 - т.е. все плохо :(
Так в чем же ошибка в FOX???
Соединение есть - проблема точно не в этом.
...
Рейтинг: 0 / 0
06.05.2010, 16:08
    #36615587
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
_Margo_,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
nom='13-5/2010  '
local lcSqlCmd
text to lcSqlCmd noshow pretext  15 
   SELECT ivc_cb.zakaz_str.naim
            , ivc_cb.zakaz_str.kol
            , mts.s_edi.naim as ed_izm
            , ivc_cb.zakaz_str.cena 
    FROM ivc_cb.zakaz_str
          , mts.s_edi 
    WHERE LTRIM(RTRIM(ivc_cb.zakaz_str.ID_DOC)) = LTRIM(RTRIM(?nom)) 
        AND ivc_cb.zakaz_str.id_izm = mts.s_edi.qedi
endtext
lnReturn =sqlexec(lnMyConnect,lcSqlCmd,'curs_1')
...
Рейтинг: 0 / 0
06.05.2010, 16:13
    #36615602
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
и так, на будущее.

никогда в своем коде в фокспро
не используйте команду sqlexec.

Вам необходимо для себя разработать какую-то
обертку, в которой будет обработка ошибок и
вывод при необходимости понятных Вам сообщений.

ищите на просторах где-то что-то подобное,
или пишите самостоятельно

иными словами:
у Вас должен быть класс или ф-я, которая будет выполнять запросы.
такой класс или ф-я или пр-ра должна быть разработана
с таким расчетом, что Вы в процессе разработки сможете
получать понятные сообщения о том, что произошло на сервере,
и будете просто и быстро понимать причину.
...
Рейтинг: 0 / 0
06.05.2010, 16:25
    #36615643
_Margo_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
прошелмимо,

огромное спасибо! Помогло.
Здесь отличный сайт и замечательные люди!
...
Рейтинг: 0 / 0
06.05.2010, 16:32
    #36615665
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
_Margo_прошелмимо,

огромное спасибо! Помогло.
Здесь отличный сайт и замечательные люди!

пожалуйста,
подсмотрите прием написания запроса,
Вы сможете копипастить запросы в фокспро
из среды разработки запросов на сервере.

также, немедленно приступите к разработке у добной для
себя процедуры(ф-и) для выполнения запросов у себя.

простое использ-е ф-и sqlexec малоинформативно,
поэтому, чтобы каждый раз не писать километры подобного
кода по обработки успеха(неуспеха) у всех
разработчиков либо свои библиотечки, либо
какие-то оберточки, которые зовут
и которые выполняют запрос и одновременно
дают разработчику как в режиме разработки,
так и в случае выполнения у пользователя,
разумную информацию для анализа.
...
Рейтинг: 0 / 0
06.05.2010, 16:42
    #36615698
_Margo_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
прошелмимо,

А может у вас ссылочки есть на такие примеры?
Ну что бы не изобретать колесо...
...
Рейтинг: 0 / 0
06.05.2010, 16:42
    #36615699
Valerii
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
[quot прошелмимо]и так, на будущее.

никогда в своем коде в фокспро
не используйте команду sqlexec.

Что взамен sqlexec?
Лично я на форме делаю свойсво в которое помещаю результат sqlexec и если что-то не так в методе Assign вывожу строку ошибки...
...
Рейтинг: 0 / 0
06.05.2010, 17:00
    #36615754
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
Valerii[quot прошелмимо]и так, на будущее.

никогда в своем коде в фокспро
не используйте команду sqlexec.

Что взамен sqlexec?
Лично я на форме делаю свойсво в которое помещаю результат sqlexec и если что-то не так в методе Assign вывожу строку ошибки...

ну как-то ф-ма и "выполнятор" запроса разные вещи.

вы желаете готовое решение?
я думаю, что их куча.

в простейшем случае это должно быть нечто
(выглядеть как-то так или иначе - это не готовое решение):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
If mySqlExec("select * ...","ttt")< 0 
   .....
   
EndIf

.....

If mySqlExec("exec tttt","ttt")< 0 
   .....
   
EndIf

.....

Function mySqlExec
Lparameters tcSqlCmd, 			 ;	&& команда, которую неоходимо выполнить на сервере
			tcAliasNameOfResult  ;	&& имя курсора, в который необходимо вернуть рез-т выборки
			
Local llResult
if !empty(tcAliasNameOfResult)
	llResult = (sqlexec(this.nConnection, tcSqlCmd, tcAliasNameOfResult)> 0  and used(tcAliasNameOfResult))
else
	llResult = (sqlexec(this.nConnection, tcSqlCmd)> 0 )
endif			

if !llResult
	local laSQlExecError[ 1 ]
	if aerror(laSQlExecError)> 0 
		
		local lcMessage
		text to lcMessage noshow textmerge pretext  3 
			Внимание! На сервере произошла ошибка выполнения запроса.
			Последняя выполненная команда:
			<<tcSqlCmd>>
				
			Полученные сообщения об ошибках с сервера:
			........
			(отображаем эл-ты массива laSQlExecError)
			.......
							
		endtext 		
			this.checkErrorSqlExec( lcMessage, @laSQlExecError)
		EndIf
		
	EndIf
endif 	

return iif(llResult,  1 , -чтохотите)

...
Рейтинг: 0 / 0
06.05.2010, 17:12
    #36615789
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
_Margo_прошелмимо,

А может у вас ссылочки есть на такие примеры?
Ну что бы не изобретать колесо...

ну вот что-то подобного поищите
http://www.foxclub.ru/sol/solution539.php


т.е. должна быть обертка, через которые нужно выполнять запросы,
желательно доработать под себя (под свои потребности)

идею, Вы должны были понять,
т.е. не только выполнять запрос,
но и получать доп. полезную информацию.
...
Рейтинг: 0 / 0
06.05.2010, 17:17
    #36615799
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по запросу в Fox и в Oracle
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вопрос по запросу в Fox и в Oracle / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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