![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
db component and ACSII
bit © (2009-01-04 23:58:00)Проблема при исполнении консольной программы возникает ошибка.
Возможно неправильная декларация TADOQuery.
Это правильная инициализация/декларация :
q1: TADOQuery;
q1:= nil;
?
Цель фоновый процесс который работает с db(mysql) через MySQL connector v3.xx.
Как "заставить" TListViev отображать ACSII кодировку?
program ConsoleClient;
{$APPTYPE CONSOLE}
uses
Windows,
Messages,
SysUtils,
...
var
q1: TADOQuery;
SendMailString, sdate, Delimiter, mfname, TmpString: string;
TStringList1, tmpStrList: TStringList;
tmpVal, Str: WideString;
DelimPos: LongInt;
mf1: TextFile;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
TStringList1:= nil;
q1:= nil;
q1.close;
q1.SQL.Text:='SELECT * FROM mytempdb WHERE Field_1 REGEXP '''+somevar+''+'.'+''';';
q1.ExecSQL;
q1.Open;
if q1.FieldCount>9 then
begin
while not q1.Eof do
begin
SendMailString:= SendMailString+ (q1.fieldbyname('Field1').text) ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field2').text) ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field3').text) ;
...
q1.Next;
end;
end;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.
Сергей М. (2009-01-05 18:24:00) [21]
> Это copy-paste из VCL
Не трынди.
В оригинальной VCL не может быть подобной галиматьи.
> EAccessViolation
Объект TADOQuery кто за тебя будет создавать, Пушкин ?
bit (2009-01-05 18:19:00) [22]>>EAccessViolation
т.е не синтаксическая, появляется при исполнении
Anatoly Podgoretsky (2009-01-05 17:03:00) [23]> bit (05.01.2009 16:50:05) [5]
Да не про программу тебя спрашивали, а про ошибку.
bit (2009-01-05 16:50:00) [24]
> Наверно, секретная ?
program ConsoleClient;
{$APPTYPE CONSOLE}
uses
Windows,
Messages,
SysUtils,
Variants,
Classes,
Graphics,
Controls,
Dialogs,
DB,
ADODB,
StdCtrls,
Buttons,
ComCtrls,
ShellApi,
ExtCtrls;
var // in VCL form -> this object was declarated in TYPE
q1: TADOQuery;
SendMailString, sdate, : string;
tmpVal, Str: WideString;
begin
try
{ TODO -oUser -cConsole Main : Insert code here }
Str:= DateTimeToStr(date());
q1:= nil; // try to initialize
q1.close;
q1.SQL.Text:='SELECT * FROM MyTestTable WHERE Field4 REGEXP '''+sdate+''+'.'+''';';
q1.ExecSQL;
q1.Open;
if q1.FieldCount>9 then //<--// One Item have 9 subitems= 1 row have 9 fields withdata// if there is no item(include 9 fileds) then ignore
begin
while not q1.Eof do
begin
SendMailString:= SendMailString+ (q1.fieldbyname('First_Name').text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname('Last_Name').text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field2').text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field3').text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field4').text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field5').text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field6').text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field7').text)+ #13 ;
SendMailString:= SendMailString+ (q1.fieldbyname('Field8').text)+ #13 ;
q1.Next;
end; //while
Writeln('SendMailString', ': ', SendMailString);
Readln;
end;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
//WriteIn('Program terminated due to an exception');
end;
end.
> В приведенном коде нет ни малейшего намека на существование
> TListView
>
Это copy-paste из VCL
Сергей М. (2009-01-05 15:02:00) [25]
> при исполнении консольной программы возникает ошибка
Наверно, секретная ?
> Как "заставить" TListViev
В приведенном коде нет ни малейшего намека на существование TListView
> SELECT * FROM mytempdb
mytempdb - это что, таблица ?
А это
> if q1.FieldCount>9
зачем ?
Ты что, не знаешь сколько в таблице полей ?
И почему при кол-ве полей <= 9 данные из таблицы перестают быть нужны ?
> TStringList1:= nil; //лишнее
> q1:= nil; //лишнее
> q1.close; //полная ерунда - объект не существует, где ты его создаешь ?
>
>
> q1.ExecSQL; //зачем ? это не для селективных запросов
> q1.Open; //
Плохиш (2009-01-05 02:01:00) [26]
> bit (05.01.09 00:58) [2]
>
> @1
>
> реализовал большую часть в VCL(программа с формами),
>
Если эти загогулины, означают ответ на пост 1, то я не это советовал. А без знания основ использования объектов в делфи, ты далеко не уйдёшь, только время потеряешь.
bit (2009-01-05 00:58:00) [27]@1
реализовал большую часть в VCL(программа с формами),
думаю подход должен быть другим
Или можно Copy-Paste (из VCL в Console)?
Плохиш (2009-01-05 00:43:00) [28]Судя по "коду", стоит начать с чтения книжки по основам.