Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.04;
Скачать: CL | DM;

Вниз

ADO SQL SUM(Field) - ошибка в IDE Access violation ... 1B041FC6   Найти похожие ветки 

 
azamatufa ©   (2007-06-28 11:06) [0]

Привет мастерам Дельфей!

Разрешите вопрос в студию.
Работю с TADOQuery, база JET (access).
пишу

Query.SQL.Add("SELECT SUM(Num)");    // (*) <----
Query.SQL.Add("FROM Table1");

Жму F9 и в момент (*) вылетает ошибка Access Violation по адресу... in module "msjet40.dll..." - НО прога продолжает работать... не нравится ему, понимаешь, сумма.. =)

А если же запускаю exe-шник без дельфей - ошибок нет..

Может кто сталкивался?

Заранее благодарен!
С/у.


 
Ega23 ©   (2007-06-28 11:14) [1]


> Query.SQL.Add("SELECT SUM(Num)");    // (*) <----
> Query.SQL.Add("FROM Table1");


НД открыт, или нет? Если открыт, то закрой.


 
ЮЮ ©   (2007-06-28 11:17) [2]

> НО прога продолжает работать

А чего бы ей не работать из-за того, что в одном из обработчиков произошла ошибка.


> Может кто сталкивался?

С Access Violation? Да тысячи раз. После исправления ошибок - пропадают :)
P.S. Приведи весь код метода, с заголовком и локальными переменными. В твоих двух строках кода - информации - ноль.


> не нравится ему, понимаешь, сумма

Можно подумать, если будет Query.SQL.Add("SELECT Num"); то AV исчезнет


 
azamatufa ©   (2007-06-28 11:19) [3]


> НД открыт, или нет? Если открыт, то закрой.

закрыта!

вот полная версия

procedure TForm1.Button1Click(Sender: TObject);
begin
 Query.Active := false;     // ну это излишек так то... но поставил..
 Query.Close;
 Query.SQL.Clear;
 Query.SQL.Add("SELECT SUM(One)");
 Query.SQL.Add("FROM Form6");
 Query.Active := true;
 Query.Open;
end;


Query - компонент на форме.


 
azamatufa ©   (2007-06-28 11:22) [4]


> Можно подумать, если будет Query.SQL.Add("SELECT Num");
> то AV исчезнет


имеено так, уважаемый!
только что кнопку 2 сделал:

procedure TForm1.Button2Click(Sender: TObject);
begin
 Query.Active := false;
 Query.Close;
 Query.SQL.Clear;
 Query.SQL.Add("SELECT One");
 Query.SQL.Add("FROM Form6");
 Query.Active := true;
 Query.Open;
end;


- никаких проблем, показал в гриде поле One (все записи).


 
Johnmen ©   (2007-06-28 11:27) [5]

Убей Query и создай заново...


 
ЮЮ ©   (2007-06-28 11:33) [6]

> вот полная версия

Почему-то тут отсутствую строки из укороченной версии :)
Разбором синтаксиса здесь и не пахнет(если над компонентом Query специально не поизгалялся), поэтому что SUM, что не SUM - все равно.
Если ошибка действительно здесь, то или сразу присваитвать SQL.Text

procedure TForm1.Button1Click(Sender: TObject);
begin
 Query.Close;
 Query.SQL.Text :=
   "SELECT SUM(One)" +
   "FROM Form6";
 Query.Open;
end;


или
 Query.SQL.BeginUpdate;
 Query.SQL.Clear;
 Query.SQL.Add("SELECT SUM(One)");
 Query.SQL.Add("FROM Form6");
 Query.SQL.EndUpdate;


 
azamatufa ©   (2007-06-28 11:38) [7]


> Убей Query и создай заново...


так тоже не помогает:

procedure TForm1.Button1Click(Sender: TObject);
var
Q: TADOQuery;
begin
 Q := TADOQuery.Create(nil);
 Q.Connection := DM.DB_Connection;
 Q.Close;
 Q.SQL.Clear;
 Q.SQL.Add("SELECT SUM(Kolvo)");
 Q.SQL.Add("FROM Table1");

 DS.DataSet := Q;      // data source

 Q.Open;
 Q.Free;
end;


ладно, видно у меня че-то не то то ли с АДО до ли Вендами.. то ли Дельфями...  так то работать можно.. но..
спасибо всем за оперативное участие!!!


 
azamatufa ©   (2007-06-28 11:39) [8]


> ЮЮ


пошел пробовать....


 
azamatufa ©   (2007-06-28 11:44) [9]


> Почему-то тут отсутствую строки из укороченной версии :)Разбором
> синтаксиса здесь и не пахнет(если над компонентом Query
> специально не поизгалялся), поэтому что SUM, что не SUM
> - все равно.Если ошибка действительно здесь, то или сразу
> присваитвать SQL.Textprocedure TForm1.Button1Click(Sender:
>  TObject);begin  Query.Close;  Query.SQL.Text :=     "SELECT
> SUM(One)" +    "FROM Form6";  Query.Open;end;или   Query.
> SQL.BeginUpdate;  Query.SQL.Clear;  Query.SQL.Add("SELECT
> SUM(One)");  Query.SQL.Add("FROM Form6");  Query.SQL.EndUpdate;
>


Господи, где ж ты был все это время, родной!!!
Как тебе переслать пару банок пива?? ;)

Слов нет..  я почти год уже... Access Violation уже стал моим другом...
а тут.. красота... вот ведь...

Большое человеческое спасибо!!!


 
ЮЮ ©   (2007-06-28 11:55) [10]

Когда так говорят "Спасибо", наверное "Пожалуйста" просто необходимо :)


 
sniknik ©   (2007-06-28 12:24) [11]

вообще вместо всяких "изгаляний" с BeginUpdate; можно просто запрос в одну строку написать (или как 1 вариант в [6] через Text, (тоже 1 получается)), и все.
ну а лучше бы использовать нормальный ADODataSet, он лишон подобных недостатков. неправильно запрос и не добавишь...


 
Игорь Шевченко ©   (2007-06-28 17:58) [12]

Интересно, это только в ADO такое сделано, что при построчном добавлении текста запроса тут же выполняется его разбор или еще где мудрецы постарались ?


 
Плохиш ©   (2007-06-28 18:28) [13]


> Интересно, это только в ADO такое сделано, что при построчном
> добавлении текста запроса тут же выполняется его разбор

Так критерия-то конца вставки запроса нету...


 
sniknik ©   (2007-06-28 20:12) [14]

> Интересно, это только в ADO такое сделано ...
это не в ADO, это в интерпретации от борланда для их "облегчительнопереходныхсBDE" компонент.
а у "родного" ADO попросту нет возможности вносить запрос частями... соответственно нет и механизма "разруливания" сего действия.


 
sniknik ©   (2007-06-28 20:21) [15]

кстати тут минимум раз в два дня мелькают предупреждения - не пользуйтесь борландовскими "костылями" (ADOTable, ADOQuery, ADOStoredProc) пользуйтесь основными (ADOCommand, ADODataSet)... и хоть бы кто послушал.
наоборот, все больше и больше вопросов именно по "корявым" компонентам, нормальных будто бы и не существует...


 
Игорь Шевченко ©   (2007-06-29 10:45) [16]

Плохиш ©   (28.06.07 18:28) [13]


> Так критерия-то конца вставки запроса нету...


А он и нафиг не сдался


 
azamatufa ©   (2007-06-29 11:43) [17]


> все больше и больше вопросов именно по "корявым" компонентам,
>  нормальных будто бы и не существует...


ну у меня только вот одна проблемка и возникла так то...
я не такой спец, конечно, больше юзер этих компонент, но вроде устраивают ADOQuery, ADOTable..
а почему их не стоит использовать???


 
Anatoly Podgoretsky ©   (2007-06-29 11:56) [18]

> azamatufa  (29.06.2007 11:43:17)  [17]

Потому что костыль.


 
Ega23 ©   (2007-06-29 11:57) [19]


> а почему их не стоит использовать???


А потому, что:


> Слов нет..  я почти год уже... Access Violation уже стал
> моим другом...
> а тут.. красота... вот ведь...



Страницы: 1 вся ветка

Текущий архив: 2007.11.04;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.019 c
2-1191946252
Err_f
2007-10-09 20:10
2007.11.04
Как с помощью Delphi можно связаться с сервером точного времени?


6-1172822574
Wahnsinng
2007-03-02 11:02
2007.11.04
Каким образом вытащить информацию из frame


15-1191618106
SerJaNT
2007-10-06 01:01
2007.11.04
Тестирование в игровой форме


4-1177961835
Альберт
2007-04-30 23:37
2007.11.04
2 битмапа в 1


2-1192098162
Антон Шестаков
2007-10-11 14:22
2007.11.04
Вычисление даты