全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1061
推到 Plurk!
推到 Facebook!

為什麼資料庫沒辦法存檔呢?

尚未結案
brad
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-31 15:07:49 IP:211.72.xxx.xxx 未訂閱
各位大大求救! 我在練習用delphi對access作存取編輯的動作,在程式執行的期間,可以正常的對資料庫作編輯的動作(table1.edit; table1.post),可是當程式重新開啟時,資料庫裏的值又回復成原先的值,這是什麼原因呢?是有少什麼指令嗎 ? 能否指導一下呢?拜託求救!!!感恩
carter6
初階會員


發表:53
回覆:108
積分:42
註冊:2002-12-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-31 15:44:08 IP:218.163.xxx.xxx 未訂閱
可否將程式碼公開? 或是參考以下是不是您要的 http://delphi.ktop.com.tw/topic.php?topic_id=59418
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-31 16:23:19 IP:210.64.xxx.xxx 未訂閱
你好 可以看一下你所使用的資料庫元件是什麼,如果是query那有可能是cacheupdate的屬性設定成True了,如果是ado的話有可能是Locktype改成ltOptimistic,如果是用clientdataset的時候,那應該是忘記下applyupdate(-1),但是如果都不是的話,就如同carter6大大所說的,貼原始碼上來看看吧!!
------
Pillar Wang
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-31 17:26:38 IP:202.62.xxx.xxx 未訂閱
您好﹗    參考這篇看看﹕ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=67354    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
brad
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-31 17:32:52 IP:211.72.xxx.xxx 未訂閱
procedure TForm1.Button4Click(Sender: TObject); var str,cal,ap_st,ap_re,be_st,be_re,temp : string; no : integer; begin str := table1.Lookup('type','apple','stock'); no := StrToInt(str)-1; table1.First; table1.Edit; table1.FieldByName('stock').Value := IntToStr(no); cal := table1.FieldByName('revenue').Value ; cal := inttostr(strtoint(cal) 16); table1.FieldByName('revenue').Value := cal; table1.Post; .. end; 還是把程式寄給你看看,有點大說...
brad
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-31 17:39:06 IP:211.72.xxx.xxx 未訂閱
我table1.edit 及table1.post 都有寫到, 在formcreate時 table1.open 在formclose時 table1.close 照理說應該是可以存檔,可是程式關閉後,資料庫裏的值還是回復成原來的值 ...奇怪耶!!
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-31 17:58:56 IP:202.62.xxx.xxx 未訂閱
您好﹗    str := table1.Lookup('type','apple','stock'); 以上段程式碼應是錯誤的寫法吧﹐您的程式可以正常Run嗎﹖資料集元件的Lookup方法應要注明回傳值﹐如下﹕
Var
  FindResult : Variant;
  Str : String;
begin
  FindResult := Table1.Lookup('欄位一;欄位二;欄位三'), VarArrayOf([值一,值二,值三]), '回傳欄位名');
  if Not VarIsNull(FindResult) then
    begin
      Str := VarToStr(FindResult);
      ShowMessage(Str);
    end;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
lcjan
初階會員


發表:11
回覆:60
積分:29
註冊:2002-03-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-31 18:32:51 IP:211.23.xxx.xxx 未訂閱
你如果有使用TQuery, 可以試試看將RequestLive設為True 發表人 - lcjan 於 2005/03/31 18:33:58
brad
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-04-01 09:41:39 IP:211.72.xxx.xxx 未訂閱
程式可以run, str := table1.Lookup('type','apple','stock');它會回傳stock這個欄位值, 這只是程式部份而己 server端的程式 unit Unit1_controller; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables, ScktComp, ComCtrls, Grids, DBGrids; type TForm1 = class(TForm) GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Database1: TDatabase; Table1: TTable; DataSource1: TDataSource; ServerSocket1: TServerSocket; Button1: TButton; Button2: TButton; StatusBar1: TStatusBar; ListBox1: TListBox; Button3: TButton; DBGrid1: TDBGrid; Button4: TButton; Button5: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ServerSocket1.Open; StatusBar1.SimpleText := 'Run Server Time : ' DateTimeToStr(now); Button1.Enabled := false; Button2.Enabled := true; end; procedure TForm1.Button2Click(Sender: TObject); begin ServerSocket1.Close; StatusBar1.SimpleText := 'Close Server Time : ' DateTimeToStr(now); Button1.Enabled := true; Button2.Enabled := false; end; procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); var i : integer; begin memo1.lines.clear; // Memo1用來顯示目前所有的Client通道編號 for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do // 一個一個Client找 begin if ServerSocket1.Socket.Connections[i].SocketHandle=Socket.SocketHandle then // 如果找到目前連上的通道 ListBox1.Items.Add('*' inttostr(Socket.SocketHandle)) // 通道編號前面加一*號代表剛連上線的Client else listBox1.Items.Add(inttostr(ServerSocket1.Socket.Connections[i].SocketHandle)); // 通到編號加入memo1中 end; StatusBar1.SimpleText := 'OnLine Time : ' DateTimeToStr(now); Button1.Enabled := False; Button2.Enabled := False; end; procedure TForm1.ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Socket.Close; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var //FindResult : variant; s ,s1: String; k,i : Integer; t: TMemo ; begin //k := ServerSocket1.Socket.Connections[k].SocketHandle; // k := ListBox1.Items.IndexOf(Socket.RemoteAddress) 1; // s := ServerSocket1.Socket.Connections[k].ReceiveText; {FindResult :=Table1.lookup('ip',socket.RemoteAddress,'machine'); if NOT VarIsNull(FindResult) then memo1.Lines.Add(Findresult 'Online'); } s:= Socket.ReceiveText ; if Length(Trim(s)) = 1 then begin try t:= TMemo(FindComponent('Memo' s)) ; t.Clear ; except end ; exit ; end ; Table1.Edit; i := 2; s1 := Copy(s,1,i-1); if s1 = '1' then begin ListBox1.Items.Add(table1.Lookup('check',s1,'machine') '動作中'); GroupBox1.Caption := table1.Lookup('check',s1,'machine'); table1.Edit; //i := 2; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('applestock').Value := s1; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('applerevenue').Value := s1; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('beerstock').Value := s1; s := Copy(s,i 1,Length(s)-i); s1 := Copy(s,1,Length(s)); table1.FieldByName('beerrevenue').Value := s1; Table1.Post; Table1.MoveBy(0); memo1.Lines.Add('Apple 庫存量:' table1.FieldByName('applestock').Value); memo1.Lines.Add('Beer 庫存量:' table1.FieldByName('beerstock').Value); memo1.Lines.Add('Apple 收入:' table1.FieldByName('applerevenue').Value); memo1.Lines.Add('Beer 收入:' table1.FieldByName('beerrevenue').Value); end; if s1 = '2' then begin ListBox1.Items.Add(table1.Lookup('check',s1,'machine') '動作中'); GroupBox2.Caption := table1.Lookup('check',s1,'machine'); table1.Edit; //i := 2; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('applestock').Value := s1; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('applerevenue').Value := s1; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('beerstock').Value := s1; s := Copy(s,i 1,Length(s)-i); s1 := Copy(s,1,Length(s)); table1.FieldByName('beerrevenue').Value := s1; Table1.Post; Table1.MoveBy(1); memo2.Lines.Add('Apple 庫存量:' table1.FieldByName('applestock').Value); memo2.Lines.Add('Beer 庫存量:' table1.FieldByName('beerstock').Value); memo2.Lines.Add('Apple 收入:' table1.FieldByName('applerevenue').Value); memo2.Lines.Add('Beer 收入:' table1.FieldByName('beerrevenue').Value); end; if s1 = '3' then begin ListBox1.Items.Add(table1.Lookup('check',s1,'machine') '動作中'); GroupBox3.Caption := table1.Lookup('check',s1,'machine'); table1.Edit; //i := 2; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('applestock').Value := s1; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('applerevenue').Value := s1; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('beerstock').Value := s1; s := Copy(s,i 1,Length(s)-i); s1 := Copy(s,1,Length(s)); table1.FieldByName('beerrevenue').Value := s1; Table1.Post; Table1.MoveBy(2); memo3.Lines.Add('Apple 庫存量:' table1.FieldByName('applestock').Value); memo3.Lines.Add('Beer 庫存量:' table1.FieldByName('beerstock').Value); memo3.Lines.Add('Apple 收入:' table1.FieldByName('applerevenue').Value); memo3.Lines.Add('Beer 收入:' table1.FieldByName('beerrevenue').Value); end; if s1 = '4' then begin ListBox1.Items.Add(table1.Lookup('check',s1,'machine') '動作中'); GroupBox4.Caption := table1.Lookup('check',s1,'machine'); table1.Edit; //i := 2; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('applestock').Value := s1; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('applerevenue').Value := s1; s := Copy(s,i 1,Length(s)-i); i := Pos(',',s); s1 := Copy(s,1,i-1); table1.FieldByName('beerstock').Value := s1; s := Copy(s,i 1,Length(s)-i); s1 := Copy(s,1,Length(s)); table1.FieldByName('beerrevenue').Value := s1; Table1.Post; Table1.MoveBy(3); memo4.Lines.Add('Apple 庫存量:' table1.FieldByName('applestock').Value); memo4.Lines.Add('Beer 庫存量:' table1.FieldByName('beerstock').Value); memo4.Lines.Add('Apple 收入:' table1.FieldByName('applerevenue').Value); memo4.Lines.Add('Beer 收入:' table1.FieldByName('beerrevenue').Value); end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin ServerSocket1.Close; end; procedure TForm1.Button3Click(Sender: TObject); begin table1.First; memo1.Lines.Add('Apple 庫存量:' table1.FieldByName('applestock').Value); memo1.Lines.Add('Beer 庫存量:' table1.FieldByName('beerstock').Value); memo1.Lines.Add('Apple 收入:' table1.FieldByName('applerevenue').Value); memo1.Lines.Add('Beer 收入:' table1.FieldByName('beerrevenue').Value); end; procedure TForm1.Button4Click(Sender: TObject); begin Table1.Next; end; procedure TForm1.Button5Click(Sender: TObject); begin Table1.Prior; end; procedure TForm1.FormCreate(Sender: TObject); begin ServerSocket1.Active := true; end; procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); var i : integer; begin // memo1.lines.clear; // Memo1用來顯示目前所有的Client通道編號 for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do // 一個一個Client找 ListBox1.Items.Add(inttostr(ServerSocket1.Socket.Connections[i].SocketHandle)); // 通到編號加入memo1中 ListBox1.Items.add('-' inttostr(Socket.SocketHandle)) // 通道編號前面加一x號代表剛離開的Client end; end. client端的程式 unit Unit1; interface uses MachineNo, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, DBTables, ScktComp, ComCtrls, Grids, DBGrids, xmldom, XMLIntf, msxmldom, XMLDoc; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Edit2: TEdit; Button4: TButton; Button5: TButton; Database1: TDatabase; Table1: TTable; DataSource1: TDataSource; ClientSocket1: TClientSocket; Button6: TButton; StatusBar1: TStatusBar; DBGrid1: TDBGrid; Button7: TButton; Button8: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure CheckMoney; procedure Button5Click(Sender: TObject); procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure Button6Click(Sender: TObject); procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; MachineID: String ; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var str : String; begin str := edit1.Text; edit1.Text := IntToStr(StrToInt(str) 5); CheckMoney; end; procedure TForm1.Button2Click(Sender: TObject); var str : String; begin str := edit1.Text; edit1.Text := IntToStr(StrToInt(str) 10); CheckMoney; end; procedure TForm1.Button3Click(Sender: TObject); begin Edit2.Text := Edit1.Text; Edit1.Text := '0'; Button4.Enabled := false; Button5.Enabled := false; end; procedure TForm1.Button4Click(Sender: TObject); var str,cal,ap_st,ap_re,be_st,be_re,temp : string; no : integer; begin str := table1.Lookup('type','apple','stock'); no := StrToInt(str)-1; table1.First; table1.Edit; table1.FieldByName('stock').Value := IntToStr(no); cal := table1.FieldByName('revenue').Value ; cal := inttostr(strtoint(cal) 16); table1.FieldByName('revenue').Value := cal; table1.Post; //PostInfo; Edit2.Text := intToStr(StrToInt(Edit1.Text) - 16); Button4.Enabled := false; Button5.Enabled := false; Edit1.Text := '0'; //PostInfo; Table1.First; ap_st := Table1.FieldByName('stock').Value; ap_re := Table1.FieldByName('revenue').Value; table1.Last; be_st := Table1.FieldByName('stock').Value; be_re := Table1.FieldByName('revenue').Value; temp := (MachineID ',' ap_st ',' ap_re ',' be_st ',' be_re); ClientSocket1.Socket.SendText(temp); end; procedure TForm1.CheckMoney; var str : String; checkno : integer; begin str := Edit1.Text; checkno := StrToInt(str); if checkno >= 16 then button4.Enabled := true; if checkno >= 21 then begin button4.Enabled := true; button5.Enabled := true; end; end; procedure CalculateMoney; begin end; procedure TForm1.Button5Click(Sender: TObject); var str,cal,ap_st,ap_re,be_st,be_re,temp : string; no : integer; begin str := table1.Lookup('type','beer','stock'); no := StrToInt(str)-1; table1.Last; table1.Edit; table1.FieldByName('stock').Value := IntToStr(no); cal := table1.FieldByName('revenue').Value ; cal := inttostr(strtoint(cal) 21 ); table1.FieldByName('revenue').Value := cal; table1.Post; //PostInfo; Edit2.Text := intToStr(StrToInt(Edit1.Text) - 21); Button4.Enabled := false; Button5.Enabled := false; Edit1.Text := '0'; //PostInfo; Table1.First; ap_st := Table1.FieldByName('stock').Value; ap_re := Table1.FieldByName('revenue').Value; table1.Last; be_st := Table1.FieldByName('stock').Value; be_re := Table1.FieldByName('revenue').Value; temp := ('1' ',' ap_st ',' ap_re ',' be_st ',' be_re); ClientSocket1.Socket.SendText(temp); end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); var ap_st,ap_re,be_st,be_re,temp : String; begin StatusBar1.SimpleText :='Connect Time :' DateTimeToStr(now); Button6.Enabled := false; //PostInfo; Table1.First; ap_st := Table1.FieldByName('stock').Value; ap_re := Table1.FieldByName('revenue').Value; table1.Last; be_st := Table1.FieldByName('stock').Value; be_re := Table1.FieldByName('revenue').Value; temp := ('1' ',' ap_st ',' ap_re ',' be_st ',' be_re); ClientSocket1.Socket.SendText(temp); end; procedure TForm1.Button6Click(Sender: TObject); begin ClientSocket1.Open; end; procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin StatusBar1.SimpleText :='ERROR Time :' DateTimeToStr(now); Button6.Enabled := true; ClientSocket1.Close; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var temp: String ; begin table1.Close; temp := ('1'); ClientSocket1.Socket.SendText(temp); ClientSocket1.Close; end; procedure TForm1.Button7Click(Sender: TObject); begin Table1.Prior; end; procedure TForm1.Button8Click(Sender: TObject); begin Table1.Next; end; procedure TForm1.FormCreate(Sender: TObject); var s: String ; t: IXMLTheMachineType ; begin t:= LoadTheMachine('.\Machine.xml') ; Self.Caption:= t.Name ; MachineID:= t.Id ; s:= 'DB' MachineID ; Database1.DatabaseName:= s ; Database1.AliasName:= s MachineID ; Database1.Connected:= True ; Table1.DatabaseName:= s ; Table1.TableName:= 'Table' ; Table1.Active:= True ; table1.Open; end; end. 各位大大幫我看看吧!!!!求救!
brad
一般會員


發表:4
回覆:6
積分:2
註冊:2005-03-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-04-01 11:33:31 IP:211.72.xxx.xxx 未訂閱
我是用動態去連各資料庫,會不會在這部份出現問題???
系統時間:2024-06-27 0:33:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!