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

获取DBGrId整行的信息

答題得分者是:max5020
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-23 15:33:53 IP:218.80.xxx.xxx 訂閱
我想在DBGRID中单击,显示整条记录的信息。并且把它的相关内容LOAD到FORM2中相应的edit,memo等控件中。我用了下面的代码,只能显示某列的内容,怎么弄啊?

[code delphi]
ShowMessage(DBGrid1.DataSource.DataSet.FieldByName('category').AsString)
[/code]

------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-23 18:23:19 IP:59.120.xxx.xxx 訂閱
可能是口語不同, 無法理解, 您要問的問題是什麼意思??
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-23 18:35:10 IP:59.114.xxx.xxx 未訂閱
照您的語法來看
應該只是取出某個cell(FieldByName)的值

您是要取出某筆記錄的全部嗎?

[code delphi]
for i := 0 to DBGrid1.DataSource.DataSet.FieldCount-1 do
ShowMessage(DBGrid1.DataSource.DataSet.Fields[i].AsString)

[/code]
編輯記錄
老大仔 重新編輯於 2009-04-23 18:38:21, 註解 無‧
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-23 20:42:15 IP:122.116.xxx.xxx 未訂閱
您好,

直接把 edit, memo 等元件換成 dbedit, dbmemo 等等
然後這些 dbedit, dbmemo 的 datasource 設成和 dbgrid 一樣
應該可以達到您要的效果吧



------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-23 21:49:04 IP:124.77.xxx.xxx 訂閱
大佬在,我想一下子就出来很多个信息,不像showmessage一样,出来一个单机一下,有事么办法
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-04-23 21:59:29 IP:220.140.xxx.xxx 未訂閱
大老在!?是指我嗎@@?

不太懂您的意思
您是要一次就把一筆資料就取出來嗎?

假如是的話
何不用SQL語法先把資料抓出來
放到變數中
然後再放到form2中也行

要不然st33chen大大的方法也行啊@@
編輯記錄
老大仔 重新編輯於 2009-04-23 22:02:25, 註解 無‧
老大仔 重新編輯於 2009-04-23 23:02:04, 註解 無‧
pillar62
資深會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-04-24 11:14:53 IP:219.87.xxx.xxx 訂閱
您好
如果你要作成離線式的處理方式,
就直接用edit.text := dataset.fieldbyname('field').asstring
或是 memo.lines.add(dataset.fieldbyname('field').asstring)的方式處理就可以啦!
試試吧!
------
Pillar Wang
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-04-24 15:45:21 IP:218.80.xxx.xxx 訂閱
不是的,我想要的功能是在DBGRID上面选择菜单,然后打开FORM2,并且把相关的信息显示在各个控件中。但是每次打开总是会显示为空记录,要进行PRIOR,或者NEXT,要不就是显示出来的记录不是我在DBGRID选中的那条记录上面。

[code delphi]
procedure TForm4.LoadData;
begin
LabeledEdit2.Text := form1.abstable1.fieldByName('提醒人').AsString;
MaskEdit1.Text := formatdatetime('HH:mm',Form1.ABSTable1.fieldbyname('提醒时间').asdatetime);
memo1.text:=form1.abstable1.fieldByName('提醒内容').AsString;
LabeledEdit1.Text := form1.abstable1.fieldByName('声音/执行文件').AsString;
cbb1.Text:=form1.ABSTable1.FieldByName('提醒类型').AsString;
if Form1.ABSTable1.FieldByName('每').Asstring<>'' then
begin
rb2.Checked :=true;
ComboBox3.Text :=Form1.ABSTable1.FieldByName('每').Asstring ;
DateTimePicker1.Enabled :=False ;
end
else begin
rb1.Checked :=True;
// ComboBox4.Enabled :=false;
DateTimePicker1.Enabled :=true ;
datetimepicker1.date:=StrToDate(formatdatetime('yyyy/mm/dd',Form1.ABSTable1.fieldbyname('提醒日期').asdatetime));
end;
if form1.abstable1.FieldByName('键盘提示').AsBoolean then
ComboBox2.ItemIndex := 0
else
ComboBox2.ItemIndex := 1;
if Form1.ABSTable1.fieldbyname('提醒日期').asdatetime=0 then
begin
rb1.Checked :=False; rb2.Checked :=true;
end
else begin
rb1.Checked :=true; rb2.Checked :=False;
datetimepicker1.date:=StrToDate(formatdatetime('yyyy/mm/dd',Form1.ABSTable1.fieldbyname('提醒日期').asdatetime))
end;
end;
打开窗口的代码
procedure TForm1.N13Click(Sender: TObject);
begin
Timer3.Enabled :=False;
CLeft:=self.Left Toolbutton2.Width 8;
CTop:= self.Top Toolbutton2.top 28;
with form4 do
begin
left:=CLeft;
Top:=CTop;
showmodal;
end;
form4.loaddata;
end;
[/code]
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-04-24 16:14:53 IP:59.114.xxx.xxx 未訂閱
請問您是要某一筆記錄的資料嗎?
假如是的話
可以用我提供給你的方法
然後在放入某變數中(ex:TStringList)
再拿來加以使用
and~既然是空記錄
那麼你可以先把查詢出來的記錄先放在MEMO上看看
看是不是有資料
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-04-24 16:18:17 IP:59.120.xxx.xxx 訂閱

===================引 用 zhouying82 文 章===================
不是的,我想要的功能是在DBGRID上面选择菜单,然后打开FORM2,并且把相关的信息显示在各个控件中。但是每次打开总是会显示为空记录,要进行PRIOR,或者NEXT,要不就是显示出来的记录不是我在DBGRID选中的那条记录上面。

[code delphi]
procedure TForm4.LoadData;
begin
LabeledEdit2.Text := form1.abstable1.fieldByName('提醒人').AsString;
MaskEdit1.Text := formatdatetime('HH:mm',Form1.ABSTable1.fieldbyname('提醒时间').asdatetime);
memo1.text:=form1.abstable1.fieldByName('提醒内容').AsString;
LabeledEdit1.Text := form1.abstable1.fieldByName('声音/执行文件').AsString;
cbb1.Text:=form1.ABSTable1.FieldByName('提醒类型').AsString;
if Form1.ABSTable1.FieldByName('每').Asstring<>'' then
begin
rb2.Checked :=true;
ComboBox3.Text :=Form1.ABSTable1.FieldByName('每').Asstring ;
DateTimePicker1.Enabled :=False ;
end
else begin
rb1.Checked :=True;
// ComboBox4.Enabled :=false;
DateTimePicker1.Enabled :=true ;
datetimepicker1.date:=StrToDate(formatdatetime('yyyy/mm/dd',Form1.ABSTable1.fieldbyname('提醒日期').asdatetime));
end;
if form1.abstable1.FieldByName('键盘提示').AsBoolean then
ComboBox2.ItemIndex := 0
else
ComboBox2.ItemIndex := 1;
if Form1.ABSTable1.fieldbyname('提醒日期').asdatetime=0 then
begin
rb1.Checked :=False; rb2.Checked :=true;
end
else begin
rb1.Checked :=true; rb2.Checked :=False;
datetimepicker1.date:=StrToDate(formatdatetime('yyyy/mm/dd',Form1.ABSTable1.fieldbyname('提醒日期').asdatetime))
end;
end;
打开窗口的代码
procedure TForm1.N13Click(Sender: TObject);
begin
Timer3.Enabled :=False;
CLeft:=self.Left Toolbutton2.Width 8;
CTop:= self.Top Toolbutton2.top 28;
with form4 do
begin
left:=CLeft;
Top:=CTop;
form4.loaddata; // 改到這行
showmodal;
end;
end;
[/code]
編輯記錄
max5020 重新編輯於 2009-04-24 16:18:56, 註解 無‧
pillar62
資深會員


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2009-04-24 16:21:35 IP:219.87.xxx.xxx 訂閱
您好

可能要請你在原來的程式中找找看有沒有地方會去影響到資料的!
如果只是這樣的動作應該是不會跑掉!
在程式中有看到一個TIMER3 是不是在什麼地方有作其他的處理!
單純的這兩段看起來似乎沒有什麼問題!
------
Pillar Wang
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#12 引用回覆 回覆 發表時間:2009-04-24 16:25:35 IP:218.80.xxx.xxx 訂閱
谢谢max5020,改条代码就解决了问题。thks
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
系統時間:2024-05-17 0:34:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!