線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1110
推到 Plurk!
推到 Facebook!

請問如何將資料顯示到TMemo中

答題得分者是:Fishman
raoli
一般會員


發表:6
回覆:4
積分:2
註冊:2004-12-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-31 01:28:21 IP:218.164.xxx.xxx 未訂閱
各位前輩你們好,我是delphi新手 想要在SQL Server上把某一個table中的欄位名稱與欄位資料 顯示到TMemo中,使用TADOConnection,TADOQuery,TADOTable 請前輩賜教 謝謝
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-31 08:03:04 IP:203.73.xxx.xxx 未訂閱
在Table或Query的OnCalcFields事件中 加入 Memo1.Text:=Query1.Fields[i].FieldName; //欄位名稱 Memo1.Text:=Query1.Fields[i].Text; //欄位值 發表人 - shinjie 於 2004/12/31 08:05:50
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-31 08:42:39 IP:210.65.xxx.xxx 未訂閱
Hi raoli,    Add some code on AfterOpen event for ADOTable/ADOQuery
procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
var
  i : integer;
begin
  Memo1.Lines.Clear;
  Dataset.First;
  while not Dataset.Eof do
    begin
      for i := 0 to Dataset.FieldCount - 1 do
        begin
          Memo1.Lines.Add(Dataset.FieldList.Fields[i].FieldName   ' = '   Dataset.FieldList.Fields[i].AsString);
        end;
      Memo1.Lines.Add('');
      Dataset.Next;
    end;
    Dataset.First;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
raoli
一般會員


發表:6
回覆:4
積分:2
註冊:2004-12-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-31 09:50:36 IP:218.164.xxx.xxx 未訂閱
兩位大大你們好    已經可以把memo的資料存成文字檔 卡在如何取出資料庫中的table 把它顯示在memo上(給user看的)    小弟學delphi還不到一個禮拜 希望有空的前輩可以幫我看一下卡在那裡    謝謝    unit MemoDemo;    interface    uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls, ADODB, DB;    type   TForm1 = class(TForm)     Edit1: TEdit;     Button1: TButton;     OpenDialog1: TOpenDialog;     SaveDialog1: TSaveDialog;     Edit2: TEdit;     Button2: TButton;     Edit3: TEdit;     Button4: TButton;     Button5: TButton;     ADOConnection1: TADOConnection;     ADOQuery1: TADOQuery;     ADOTable1: TADOTable;     Memo1: TMemo;     Button3: TButton;     procedure LoadToMemo(Sender: TObject);     procedure OpenFile(Sender: TObject);     procedure SaveFile(Sender: TObject);     procedure ClearMemo(Sender: TObject);     procedure GetData(Sender: TObject);     procedure After(DataSet: TDataSet);   private     { Private declarations }   public     { Public declarations }   end;    var   Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.LoadToMemo(Sender: TObject);//載入至Memo按鈕 begin   Memo1.Text:= Memo1.Text + #10 + Edit1.Text + #13;   Edit1.Clear; end;        procedure TForm1.OpenFile(Sender: TObject);//開啓檔案按鈕    var TF:TEXTFILE;        FileHandle:Integer;        STR:String; begin      OpenDialog1.Execute;      Edit2.Text:=OpenDialog1.FileName;         FileHandle:=FileOpen(OpenDialog1.FileName,fmOpenWrite);      FileClose(FileHandle);         if FileHandle<0 then begin FileHandle:=FileCreate(OpenDialog1.FileName); FileClose(FileHandle); ShowMessage('請選擇一個檔案!'); end; try AssignFile(TF,OpenDialog1.FileName); reset(TF); Memo1.Lines.Clear; while NOT EOF(TF) do begin READLN(TF,STR); Memo1.Lines.Add(STR); end; CloseFile(TF); ShowMessage('讀取完成!'); except ShowMessage('讀取失敗!'); end; end; procedure TForm1.SaveFile(Sender: TObject);//儲存檔案按鈕 var TF:TextFile; FileHandle:Integer; begin SaveDialog1.Execute; Edit3.Text:=SaveDialog1.FileName; try FileHandle:=FileOpen(SaveDialog1.FileName,fmOpenWrite); FileClose(FileHandle); if FileHandle<0 then begin FileHandle:=FileCreate(SaveDialog1.FileName); FileClose(FileHandle); end; AssignFile(TF,SaveDialog1.FileName); rewrite(TF); WRITELN(TF,Memo1.Lines.Text); CloseFile(TF); ShowMessage('存檔完成'); except ShowMessage('存檔失敗'); end; end; procedure TForm1.ClearMemo(Sender: TObject);//清除memo按鈕 begin Memo1.Lines.Clear; end; procedure TForm1.GetData(Sender: TObject);//取得資料按鈕 begin ADOConnection1.Connected:=true; ADOQuery1.SQL.Add('select * from users'); After(ADOQuery1); end; //ADOQuery物件的AfterOpen event procedure TForm1.After(DataSet: TDataSet); var i:Integer; //fishman大大的範例 begin Memo1.Lines.Clear; Dataset.First; while not Dataset.Eof do begin for i := 0 to Dataset.FieldCount - 1 do begin Memo1.Lines.Add(Dataset.FieldList.Fields[i].FieldName ' = ' Dataset.FieldList.Fields[i].AsString); end; Memo1.Lines.Add(''); Dataset.Next; end; Dataset.First; end; end.
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-31 10:10:24 IP:210.65.xxx.xxx 未訂閱
Hi raoli,    1.修改 GetData 的 OnClick Event 程式碼 2.使用 Memo1.Lines.LoadFromFile 與 Memo1.Lines.SaveToFile 進行讀、存檔到 TextFile
procedure TForm1.GetDataClick(Sender: TObject);//取得資料按鈕
begin
//ADOConnection1.Connected:=true;
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'select * from users';
  ADOQuery1.Open;
end;    procedure TForm1.OpenFileClick(Sender: TObject);
begin
  if OpenDialog1.Execute then
    begin
      memo1.Lines.Clear;
      memo1.Lines.LoadFromFile(OpenDialog1.FileName);
    end;
end;    procedure TForm1.SaveFileClick(Sender: TObject);
begin
  if SaveDialog1.Execute then
    begin
      if fileexists(SaveDialog1.FileName) then
        if Application.MessageBox(PChar('檔案 '   SaveDialog1.FileName   ' 已存在,是否取代?' ),'確認取代檔案',MB_ICONINFORMATION   MB_YESNO   MB_DEFBUTTON2) = IDNO then
          deletefile(SaveDialog1.FileName)
        else
          exit;
      memo1.Lines.LoadFromFile(SaveDialog1.FileName);
    end;
end;
發表人 -
------
Fishman
raoli
一般會員


發表:6
回覆:4
積分:2
註冊:2004-12-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-31 10:40:12 IP:218.164.xxx.xxx 未訂閱
非常感謝您熱心的幫助    但希望的畫面是類似    name sex tel addr work school  //欄位名稱 xxx   x  123 xxxxx x    xxxxx  //欄位的值 yyy   y  456 yyyy  y    yyyyy   ...   .  ...  ...  .    .....    而且每按一次取得資料按鈕 每次都是顯示十筆資料    這個已經是火燒屁股了 希望可以趕快解決它 希望不會佔用您太多的時間
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-31 11:02:55 IP:210.65.xxx.xxx 未訂閱
Hi raoli,    1.大概是這樣,格式方面可以自行調整
procedure TForm1.ADOQuery1AfterOpen(DataSet: TDataSet);
var
  i : integer;
  str : String;
begin
  Memo1.Lines.Clear;
  Dataset.First;
  str := '';
  for i := 0 to Dataset.FieldCount - 1 do
    begin
      str := str   (Dataset.FieldList.Fields[i].FieldName   ',');
    end;
  Memo1.Lines.Add(str);
  while not Dataset.Eof do
    begin
      str := '';
      for i := 0 to Dataset.FieldCount - 1 do
        begin
          str := str   Dataset.FieldList.Fields[i].AsString   ',';
        end;
      Memo1.Lines.Add(str);
      Dataset.Next;
    end;
    Dataset.First;
end;
2.檢查一下 TADOQuery 的 MaxRecords 是否有設定?將其更改為 0 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
raoli
一般會員


發表:6
回覆:4
積分:2
註冊:2004-12-29

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-31 11:22:58 IP:218.164.xxx.xxx 未訂閱
真是位高手 thanks a lot
系統時間:2024-06-26 9:19:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!