TQuery: Problem with SQL statement

14 отговора 336 прегледа
#1

TQuery: Problem with SQL statement

Za6to Query.Open() v Delphi7 kazva: 'Capability not supported'
na slednata SQL zaiavka:

select *
from call, calls
where
calls.cid = call.id and
call.act = 1 and
call.calling = 954001 and
calls.status in ( 0, 3 );

kato mahna 'in' se opravia (zameneno e s =), no kazva 'Table is readonly'

Отговор
в отговор на uSeR #2

Re: TQuery: Problem with SQL statement

Пробвай следното:
- select *.call,*.calls from ....
- вместо calls.status in ( 0, 3 ); пробвай с 'and' т.e. ..... and status.calls = 0 and status.calls = 3. Обърнал си реда на табл и колоната. Ако ти трябва статуса да е от 1 до 3 използвай between
- Тези имена на таблици(?) са доста подозрителни. особенно 'call'. Aко можеш промени ги на нещо друго.

Отговор
в отговор на uSeR #3

Re: TQuery: Problem with SQL statement

'Capability not supported':
CAPABILITY
[.keipў'biliti] 1. дееспособност, способност, талант

2. рl потенциални възможности, неизявени качества/способности

NOT
[nЈt] 1. отр. на модални, спомагателни и смислови гл., ост. след смислов гл. не

I do NOT know, ост. I know NOT не зная

2. с part, inf, ger не

SUPPORT
[sў'pЈ:t] I. 1. поддържам, подкрепям, подпирам, подпомагам, одобрявам, насърчавам

2. търпя, понасям, издържам (тежест. натиск и пр.)
.........................

Кое не е ясно?

Очевидно тази възможност не се поддържа от твоя сървър (ти си знаеш кой е, но не смяташ за необходимо да ни кажеш на нас)

Можеш да замениш calls.status in ( 0, 3 ) на (calls.status=0 or calls.status=3)

Това би трябвало да се поддържа от всички

Отговор
в отговор на uSeR #4

Re: TQuery: Problem with SQL statement

Abe uj znaia English ....
Mersi za prevoda
Lo6oto e 4e vryzvaiki se kym sy6tia server prez konzola ili MyphpAdmin
tozi select si minava idealno ( az tam go sastavih ).
Kogato re6a oba4e da go pusna prez TQuery Delphito mi dava exception.
Taka 4e problema si e v Delphi i sigurno byrkam niakade sas na4ina na connect.

Pls kajete osven s TQuery kak po drug na4in da se izpylni zaiavka?

Отговор
в отговор на uSeR #5

Re: TQuery: Problem with SQL statement

Пиши на български

Отговор
в отговор на uSeR #6

Re: TQuery: Problem with SQL statement

ОК ще пиша на български ама моля помогнете.
При това се оказва че TQuery се държи странно и при други случаи
и хвърля ексепшъни всеки път щом му се зададе малко по-сложна
конструкция...

Отговор
в отговор на yCeP #7

Re: TQuery: Problem with SQL statement

Знаеш ли, въпросът ти звучи много близко до "Имам проблем. Тука нещо ми гърми. Моля помогнете!". Обаче какъв ти е проблема? Кое е това нещо? Каква грешка ти дава? Кога? Не е ясно...
А сега вземи и напиши - каква база данни ползваш? Кои са SQL-ите които не вървят? Каква грешка ти дава? Какво означава "се държи странно"? Кои са "другите случаи"?
Просто ще трябва да дадеш малко информация за да получиш смислен отговор...

Отговор
в отговор на andrew_nikoloff #9

Re: TQuery: Problem with SQL statement

Ами мога да дам следните примери:
1. ........Status in ( 0, 3 );
т.е. не поддържа in
2. ........Order by id asc;
т.е. за Делфи asc е непозната ключова дума
3. ........Limit 4;
т.е. Limit довежда до грешка.
4. Когато се прави JOIN на две таблици дава грешка Table is readonly.

Отговор
в отговор на yCeP #10

Re: TQuery: Problem with SQL statement

Мисля, че не ти е съвсем ясен механизма на работа на Делфи с бази данни.
На Делфи синтаксиса на SQL му е абсолютно непознат и не го поддържа, защото не му е необходимо. Той трябва да се поддържа от твоя неизвестен нам сървър (страшно секретен трябва да е щом не ни го казваш) Тук една кристална топка май премигна, като споменавам MySQL

SQL изразите само се предават от компонентите (напр. TQuery) през компонентите за връзка (напр. TDatabase) и евентуално съответния драйвер (напр ODBC) до твоя сървър. Сървъра обработва заявката и връща по обратния път резултата (при успех) или съответното съобщение за грешка (твоя случай)

Надявам се сега разбираш защо настояваме да разберем каква база ползваш.

По т.т. 1 - 3:
Ако тези изрази минават през MyphpAdmin, а дават грешка (хубаво беше да дадеш текста на грешката, а сега пак се налага да гледам в кристалната топка ) през твоето приложение е вероятно или да се свързваш с друг сървър, или да ползваш непълноценен драйвер, или ... още бог знае какво
По т.4 би могъл да ползваш напр. TUpdateSQL, или ... Но по-добре като за начало да се справиш с по-простата задачка да получиш какъв да е select без грешка, пак после ще го правиш обновяем

Редактирано от NDeu на

Отговор
в отговор на NDeu #11

Re: TQuery: Problem with SQL statement

Мерси за съветите NDeu!!!
Сървъра е MySQL 4.22 за Windows, така май разбулих една от кристалните топки:) , драйвера е ODBC3.51. Инак е вярно, че не съм много наясно с механизма на работа на Делфи с бази данни - използвам засега само TQuery. Това което ме шашва е че една SQL конструкция, която работи през конзола, MyPHPAdmin или TOAD(не знам дали някои е чувал за този tool за MySQL), записана в Делфи дава гореспоменатите проблеми. Т.е. неща които по принцип работят през Делфи дават ядове. Забелязах че една от честите грешки е:
"Capability not supported" - когато използвам in, и затова тази грешка я писах първа.
Ако мога поне нея да реша ще се пооправят някои неща :)
Същата конструкция през гореспоменатите програми си минава като пич.
Е стига от мене ПОМАГАЙТЕ!!!

Отговор
в отговор на УcEp #12

Re: TQuery: Problem with SQL statement

Хайде и аз да опитам телепатичните си способности :)

Query.RequestLive да е false

Оправя ли проблема?

Отговор
в отговор на Eмил #13

Re: TQuery: Problem with SQL statement

Благодаря ще го пробвам днес вечерта, че сега сървъра ми не работи :)

Отговор
в отговор на УcEp #14

SQLQRYMODE

Опитай също така да смениш SQLQRYMODE на alias-а да е SERVER и да видим какво ще стане

Отговор
в отговор на Eмил #15

Re: TQuery: Problem with SQL statement

Емо много благодаря всичко се оправи проблема беше в RequestLive

Отговор