안녕하세요.
밑에 질문을 올렸는데, 질문의 내용이 부족한거 같아서 소스를 첨부하여 다시 질문해봅니다.
폼을 두개 동시에 띄워서
하나의 폼에는 DB에 내용을 insert 하고
하나의 폼에는 Select 문으로 읽어오게 하였습니다.
그런데 insert 시킨후 , 아무리 refresh 를 하거나 다시 쿼리문을 실행하여도
새로운 내용으로 갱신되지 않습니다.
프로그램을 종료했다가, 다시 실행시키면 새로운 내용으로 되어 있구요~
조언부탁드리겠습니다
===insert 는====
Insert_sql:='INSERT INTO M_TABLE(DATEDA,SELLTIME,MENUNAME,ETC,QUANTIFY,COST) values(';
Insert_sql:=Insert_sql+'''' + Dateda + '''' + ',' + '''' + SellTime + '''' + ',' + '''' + copy(ListBox4.Items.Strings[i],7,26) + '''' +','+''''+ Copy(ListBox4.Items.Strings[i],2,4) + '''' + ',' + '''' + ListBox5.Items.Strings[i] + '''' + ',' +'''' + ListBox3.Items.Strings[i] + '''' + ')';
Zquery1.SQL.Clear;
Zquery1.Sql.Add(Insert_sql);
try
Zquery1.ExecSQL;
except
ShowMessage('데이터베이스에 접근할 수 없습니다(T_M)');
end;
== 다른 폼에서 select 는 버튼을 클릭하면 갱신되게 하려고 하였는데==
procedure TfmToday.BitBtn1Click(Sender: TObject);
var
Dateda , Select_qry: String;
begin
Dateda:=FormatDateTime('YY-MM-DD', Now);
Select_qry :='select MENUNAME,SUM(QUANTIFY),SUM(COST) from M_TABLE where DATEDA='+''''+Dateda+''''+'group by MENUNAME';
ZqryToday3.SQL.Clear;
ZqryToday3.SQL.Add(Select_qry);
ZqryToday3.ExecSQL;
ZqryToday3.open;
end;
IBconsol 등으로 확인하면 입력되어있는데, 다른폼에서 리플레쉬해도 갱신이 안됩니다 ㅠㅠ
괜찮으시다면 조언부탁드리겠습니다.
즐거운하루되십시오
어떤 Database를 사용하고 계신지는 모르겠으나 일단 어떤 DB라도 명령만 조금 틀린것 뿐이니 오라클을 예로
설명을 드리겠습니다.
프로그램 두개에서 한쪽은 인서트를 또 한쪽은 조회를 하는 프로그램이라고 하면
한쪽에서 인서트를 해도 다른쪽에서 바로 조회가 되지 않습니다. 왜냐하면 인서트 한쪽에서
작업에 대한 반영을(즉 Commit)을 해 주지 않았기 때문에 현재 다른쪽에서는 작업전 Data 밖에 보이지 않는 것이죠. 또한 조회하는 쪽에서 아무리 Reflash 를 한다고 해도 작업한 쪽에서 DB에 나 작업 끝났다 반영해라 하는 명령이 없는 한 조회쪽의 작업은 아무런 의미가 없게 되는 겁니다.
따라서 작업완료후 바로 반영이 되게 하기 위해서는..
작업을 해 준 쪽에서 Reflash 나 Commit 명령을 DB에 주어서 작업의 반영을 알려야 합니다. 그럼.
(이건 DB쪽의 Commit 과 Rollback에 대한 부분을 공부하시면 압니다. 그럼)