Здравствуйте, уважаемые форумчане!
Помогите решить проблему с отображением данных в гриде.
На главной форме (fmMain) программы использую DBGrid, TQuery, TDataSource. База данных MDB. В свойстве TQuery, SQL (select * from CashDok). Создал другую форму (fmChange1) для ввода новых записей в таблице CashDok.
procedure TfmChange1.Button1Click(Sender: TObject);
begin
Sum := 0;
Bal := 0;
if (Edit1.Text <> null) and (Edit2.Text <> null) then
begin
Sum := StrtoFloat(Edit2.text) * StrtoFloat(Edit1.Text);
dm.qCash.close;
dm.qCash.sql.Clear;
dm.qCash.sql.Add('insert into CashDok (cDate,cKod,cName,cCurs,cSum,cOper,cDiscount,TotalSum) values (:p1,:p2,:p3,:p4,:p5,:p6,:p7,:p8)');
dm.qCash.ParamByName('p1').Value:=DateTimeToStr(Now); //Дата и время
dm.qCash.ParamByName('p2').Value:=0; //Код валюты
dm.qCash.ParamByName('p3').Value:=dxButtonEdit1.Text; //Обозначение валюты
dm.qCash.ParamByName('p4').Value:=Edit1.Text; // Курс валюты
dm.qCash.ParamByName('p5').Value:=Edit2.Text; // Сумма
dm.qCash.ParamByName('p6').Value:='Покупка'; // Операция
dm.qCash.ParamByName('p7').Value:=Edit3.Text; //Скидка
dm.qCash.ParamByName('p8').Value:=Sum; // Сумма после обмена, т.е. Сумма * Курс
dm.qCash.Prepare;
dm.qCash.ExecSQL;
fmChange1.Close;
Bal := StrtoFloat(Edit4.Text) - StrtoFloat(Edit2.Text);
Edit5.Text := FloatToStr(Round(Bal*100)/100); //FloatToStr(Bal);
dm.qSprVal.close;
dm.qSprVal.sql.Clear;
dm.qSprVal.sql.Add('update SprVal set vBalance = '''+ Edit5.Text +''' where vOboz = '''+ dxButtonEdit1.Text+'''');
dm.qSprVal.Prepare;
dm.qSprVal.ExecSQL;
end
else
ShowMessage('Не все поля заполнены');
end;
После нажатия кнопки "Сохранить", новая запись сохраняется в таблице CashDok, но на главной форме в гриде таблица закрывается, соответственно не отображаются записи.
Использую следующее, но ни как не помогает.
dm.qCash.Refresh;
или
fmMain.DBGridEh1.Refresh;
или
dm.qCash.Active:=True;
Что я делаю не правильно. Помогите. Заранее благодарен.