Заранее благодарен Всем кто мне помогал в этом форуме. СПАСИБО!
В последнее время мучаюсь с этой вот программой.
Что в принципе делает программа:
Есть много файлов, из них берутся данные и переносятся в БД,
Затем запросами мы получаем некоторые данные.
Теоретически довольно просто, но с практической точки зрения...для меня трудно.
С чем я сейчас бьюсь:
1) Как передать пароль и юзернейм в базу и не вводить пароль каждый раз (БД MySql)
2) Как правильно писать обработчики для run-time контролов. Не знаю. Поискал в инете (ВОТ ТУТ), но мне это не помогло, даже листинг проверял, но в моих руках это не заработало.
3) РАционально ли я поступаю: создаю две формы MainForm и ChildForm. В ChildForm'е у меня выводятся контролы:
а) диалог выбора папки из которой брать файлы для переливания их в таблицу БД
б) сама таблица БД
в) отчет выдаваемый по запросу.
Это основные вещи которые будут использоваться.
Пределам моей благодарности не будет
Заранее всем, кто уделит мне время ОГРОМНОЕ СПАСИБО.
Мучающие меня места выделены БОЛЬШИМИ буквами.
код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ActnList, ComCtrls, DBtables, DB, Grids, DBGrids, ShellAPI,
StdCtrls, ExtCtrls,comobj,shlobj, StrUtils;
type
TMainForm = class(TForm)
MainMenu1: TMainMenu;
querys1: TMenuItem;
DOROreports1: TMenuItem;
dailyreport1: TMenuItem;
weeklyreport1: TMenuItem;
DCDreports1: TMenuItem;
KGreports1: TMenuItem;
ActionList1: TActionList;
tables1: TMenuItem;
showtable1: TMenuItem;
StatusBar1: TStatusBar;
viewtable1: TMenuItem;
viewtable: TAction;
dayreport: TAction;
weekreport: TAction;
prepare: TAction;
Prepare1: TMenuItem;
procedure btnOpenclick(Sender: TObject);
procedure btnOkClick(Sender:TObject);
procedure prepareExecute(Sender: TObject);
procedure viewtableExecute(Sender: TObject);
private
public
end;
var
MainForm : TMainForm;
StrMyFolder : string;
btnOK : Tbutton;
btnOk1 : TButton;
btnOpen : Tbutton;
edOpen : Tedit;
Table1 : TTable;
DataSource1 : TDataSource;
DBGrid1 : TDBGrid;
Query1 : TQuery;
implementation
uses unit2;
{$R *.dfm}
procedure TMainForm.OK1btnClick(Sender:TObject);
begin
ChildForm1.Free; //В ЭТОМ МЕСТЕ ВЫДАЕТСЯ AV!!!
end;
procedure TMainForm.btnOpenclick(Sender:TObject);
begin
//тут мы вызываем диалог выбора папки
StrMyFolder:=SimpleSelectFolder(handle);
edOpen.Text:=strmyfolder;
end;
procedure TMainForm.btnOkClick(Sender:TObject);
var
...
begin
Table1:=TTable.Create(ChildForm1); //инициируем таблицу
DataSource1:=TDataSource.Create(ChildForm1);//инизиируем источник данных
Query1:=TQuery.Create(ChildForm1);
{}
with Table1 do
begin
DatabaseName:='db_server'; //имя базы тоже что и в ОДБС
TableName:='doro'; //имя таблицы
Active:=true; //активируем, чтобы выдавался запрос на соединение
end;
{}
with DataSource1 do
begin
DataSet:=Table1; //связываем источник данных с таблицей
end;
{}
with Query1 do
begin
DatabaseName:='db_server';
DataSource:=DataSource1;
end;
{-------------------------SQL------------------------------}
{ОЧИЩАЕМ ТАБЛИЦУ}
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('DELETE FROM doro');
Query1.ExecSQL;
...
{Забиваем данные в таблицу}
....
ChildForm1.Free; //ЭТО НЕ РАБОТАЕТ(почему?) ((( окно не закрывается, подскажите правильный способ плз
end;
procedure TMainForm.prepareExecute(Sender: TObject);
begin
//Создаем форму
ChildForm1 := TChildForm1.Create(Self);
//создаем на форме контролы: 2 кнопки и эдит
btnOk:=Tbutton.create(ChildForm1);
btnOpen:=Tbutton.create(ChildForm1);
edOpen:=TEdit.Create(ChildForm1);
//Указываем координаты кнопок
....
//Делаем эти Контролы видимыми на ChildForm
btnOpen.OnClick:=btnOpenClick;
btnOk.OnClick:=btnOkClick;
btnOk.Parent:=ChildForm1;
btnOpen.Parent:=ChildForm1;
edOpen.Parent:=ChildForm1;
end;
procedure TMainForm.viewtableExecute(Sender: TObject);
begin
ChildForm1:=TChildForm1.Create(Self); //создаем дочернее окно
Table1:=TTable.Create(ChildForm1); //инициируем таблицу
DataSource1:=TDataSource.Create(ChildForm1);//инизиируем источник данных
DBGrid1:=TDBGrid.Create(ChildForm1); //объявляем дбгрид
btnOk1:=TButton.Create(ChildForm1);
{}
with Table1 do
begin
DatabaseName:='db_server'; //имя базы тоже что и в ОДБС
TableName:='doro'; //имя таблицы
Active:=true; //активируем, чтобы выдавался запрос на соединение (ДОСТАЛ КАЖДЫЙ РАЗ ВЫЛАЗИТЬ, ХОТЕЛОСЬ БЫ ИЗБАВИТЬСЯ)
end;
{}
with DataSource1 do
begin
DataSet:=Table1; //связываем источник данных с таблицей
end;
{}
with DBGrid1 do
begin
DataSource:=DataSource1; //связываем дбгрид с источником
Align:=alClient;
end;
btnOk1.OnClick:=TMainForm.OK1btnClick; //НЕ УДАЕТСЯ МНЕ САМОМУ НАПИСАТЬ ОБРАБОТЧИК, руки блин...помогите пожалуйста!!!! ((((
end;
{}
DBGrid1.Parent:=ChildForm1; //делаем дбгрид видимым
btnOk1.Parent:=ChildForm1;
end;
end.