Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2012, 14:51   #1
Phantosmagor
Пользователь
 
Регистрация: 14.03.2012
Сообщений: 24
По умолчанию Access+Обработчик

Добрый день, уважаемые форумчане хотел написать программу доходов-расходов, используя локальное хранилище.

Локальным хранилищем выбрал MDB файл MS Access. ( Mysql ставить в таких задачах посчитал не целесообразным, а т.к знаком с SQL/MySQL , то базу на Access счёл разумным решением).

Есть 2 формы:

1) Форма сводной таблицы (DBTables+DBGrid)
2) Форма добавления данных в файл Access'a

В чём собственно проблема:

По закрытию формы №2, хотел бы, чтобы автоматически обновлялось содержимое DBGrid формы 1. Никак не могу добиться, чтобы DBGrid формы 1 обновлялся сразу после закрытия формы2.

Код добавления в базу формы 2
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
s : String;
strD:String;
begin
strD := FormatDateTime('yyyy-mm-dd hh:mm:ss', DateTimePicker1.Datetime);
s := 'insert into EP (Data,Inc,Out,Who,OnWhat) values("'+strD+'","'+Edit1.Text+'","'+Edit4.Text+'","'+Combobox2.Text+'","'+Edit2.Text +'")';

ADOQuery1.SQL.Text := s;
try
            ADOQuery1.ExecSQL;
            Form2.Timer1.Enabled:=true;
            Application.MessageBox('лалала', 'лала',MB_ICONINFORMATION);
     except on E: Exception do
            Application.MessageBox('огого,'огогого',MB_ICONERROR);
     end;
ADOQuery1.Close;
Form2.Button2.Click;  // - Кнопка на главной форме, которая апдейтит таблицу вручную *см код дальше
Form1.Close;
end;
код главной формы
Код:
procedure TForm2.FormCreate(Sender: TObject);
var
a:String;
d:string;
s:string;
begin
try
a:='Select Sum(Inc)-Sum(Out) as s_all From EP';
AdoQuery1.SQL.Text:=a;
AdoQuery1.Open;
d:=AdoQuery1.FieldValues['s_all'];
Edit3.Text:=d;
AdoQuery1.Close;

s := 'Select * From EP where WHO <> "unknown" order by Data';
ADOQuery1.SQL.Text := s;
ADOQuery1.Open;
except
on E: Exception do
begin
end;
end;
end;

..............
rocedure TForm2.Button2Click(Sender: TObject);
var
a:String;
d:string;
s:string;
begin
a:='Select Sum(Inc)-Sum(Out) as s_all From EP';
AdoQuery1.SQL.Text:=a;
AdoQuery1.Open;
d:=AdoQuery1.FieldValues['s_all'];
Edit3.Text:=d;
AdoQuery1.Close;

s := 'Select * From EP where WHO <> "unknown" order by Data';
ADOQuery1.SQL.Text := s;
ADOQuery1.Open;
//ADOQuery1.Close;
end;

Сделал обновление через клик Form2.Button2 по таймеру:

Код:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
 Button2.Click;
 Timer1.Enabled:=false;
end;
Не всегда успевает отработать ( я имею ввиду, что отрабатывает, но свежедобавленные данные не появляются). А появляются лишь после пары кликов на "обновить" вручную. Может кто подскажет, куда копать?

P.S

про
Код:
s := 'Select * From EP where WHO <> "unknown" order by Data';
- нужный мне кусок, специально, чтобы не отображать одну из строк в базе.

Последний раз редактировалось Phantosmagor; 02.10.2012 в 14:54.
Phantosmagor вне форума Ответить с цитированием
Старый 03.10.2012, 14:00   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Что мешает обоим гридам назначить один DataSource? Даже писать ничего не придется. Я бы еще и все невизуальные компоненты расположил в Datamodule.
Баламут вне форума Ответить с цитированием
Старый 03.10.2012, 14:17   #3
Phantosmagor
Пользователь
 
Регистрация: 14.03.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
Что мешает обоим гридам назначить один DataSource? Даже писать ничего не придется. Я бы еще и все невизуальные компоненты расположил в Datamodule.
1) Дбгрид один. Используется только в главной форме
2) AdoConnection один на обе формы , Datasource -тоже. *чуток переделывал код в 1ом посте, не обращайте внимание на то, что там 2 разных Конекшена.

Последний раз редактировалось Phantosmagor; 04.10.2012 в 08:21.
Phantosmagor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик workaspace C# (си шарп) 0 27.09.2012 15:54
Обработчик RussDragon PHP 8 13.05.2012 21:23
Создать обработчик access php Ghennadiy Фриланс 0 18.01.2011 18:07
Скрипт обработчик eldar PHP 5 11.09.2009 19:03
Обработчик ошибок. Dj_smart Общие вопросы Delphi 17 30.03.2008 11:58