手動建立的datamodule 正常更新有問題 |
缺席
|
nokia2005
一般會員 發表:27 回覆:18 積分:9 註冊:2006-12-26 發送簡訊給我 |
我原本就有一個Datamodule但因程式的關係必須
再建立一個 Application.CreateForm(TFormCustClass, FormCustClass); 和 var dataModule1:TDataModule1; DataModule1 := TDataModule1.Create(Application); 可是當我使用手動建立的無法去更新到資料庫要如何才能正常的更新呢 我在已放入要連資料庫要有的元件了也可正常顯示與新增刪除編輯所有功能 但就是applyupdate(0)無法正常更新也無錯誤訊息 |
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
|
nokia2005
一般會員 發表:27 回覆:18 積分:9 註冊:2006-12-26 發送簡訊給我 |
感謝前輩熱心指點以是我的程式碼
這是dll檔做成的下面是程式碼 真的非常感謝 unit FrmCustClass; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, bsSkinCtrls, bsSkinData, BusinessSkinForm, StdCtrls, DB, bsdbctrls, bsMessages, bsSkinGrids, bsDBGrids, DBXpress, FMTBcd, DBClient, Provider, SqlExpr, unGlobalVariable, Grids, UnConfigLoader, DBGrids; type TFormCustClass = class(TForm) bsBusinessSkinForm1: TbsBusinessSkinForm; bsSkinData1: TbsSkinData; bsCompressedStoredSkin1: TbsCompressedStoredSkin; bsSkinPanel1: TbsSkinPanel; bsSkinPanel3: TbsSkinPanel; bsSkinPanel4: TbsSkinPanel; bsSkinStatusPanel1: TbsSkinStatusPanel; bsSkinPanel2: TbsSkinPanel; bsSkinDBNavigator1: TbsSkinDBNavigator; ds_CustClass: TDataSource; bsSkinMessage1: TbsSkinMessage; bsSkinDBGrid1: TbsSkinDBGrid; SQL_CustClass: TSQLDataSet; DSP_CustClass: TDataSetProvider; CDS_CustClass: TClientDataSet; CDS_CustClassCUST_CLASSID: TStringField; CDS_CustClassCUST_CLASSNAME: TStringField; Button1: TButton; procedure ds_CustClassStateChange(Sender: TObject); procedure bsSkinDBGrid1KeyPress(Sender: TObject; var Key: Char); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); private public end; var FormCustClass: TFormCustClass; blShowForm:boolean; GetClass:String; DataModule1: TDataModule1; function ShowForm: bool;export; exports ShowForm; function GetCustClass:String;export; exports GetCustClass; implementation {$R *.dfm} function ShowForm: Bool; begin {create the form} formCustClass := TFormCustClass.Create(nil); // Application.CreateForm(TFormCustClass, FormCustClass); {must be modal for DLL calls (never modeless) } try Result := (FormCustClass.ShowModal = mrOK); finally FormCustClass.Free; end; end; procedure TFormCustClass.ds_CustClassStateChange(Sender: TObject); begin Case ds_CustClass.DataSet.State of dsInsert: bsSkinStatusPanel1.Caption := '資料新增模式'; dsEdit: bsSkinStatusPanel1.Caption := '資料異動模式'; dsBrowse: bsSkinStatusPanel1.Caption := '資料檢視模式'; end; end; procedure TFormCustClass.bsSkinDBGrid1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then keybd_event(VK_TAB,0,0,0); end; procedure TFormCustClass.FormClose(Sender: TObject; var Action: TCloseAction); begin if cds_custclass.ChangeCount > 0 then begin cds_custclass.ApplyUpdates(0); bsSkinMessage1.MessageDlg('資料已更新完成!',mtinformation,[mbOk],0); end; end; procedure TFormCustClass.FormShow(Sender: TObject); begin DataModule1 := TDataModule1.Create(Application); sql_custclass.SQLConnection:=datamodule1.connGLB; try if ds_custclass.DataSet.Active = false then begin ds_custclass.DataSet.Open; end; except on e:exception do begin showmessage(e.Message); end; end; end. |
nokia2005
一般會員 發表:27 回覆:18 積分:9 註冊:2006-12-26 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |