Форум: "Базы";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
Вниз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.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;
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.043 c