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

有關DBGRID....

答題得分者是:st33chen
g9614721
一般會員


發表:27
回覆:51
積分:15
註冊:2008-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-07 01:33:20 IP:220.131.xxx.xxx 訂閱
問題1

資料表:A_OUT
物品名稱領用數量使用者日期
A100小明3/7
B100小明3/7
A50小明3/6
B50小明3/6
A70小華3/7
B70小華3/7
A40小華3/6
B40小華3/6

form1.Query1.Close;
form1.Query1.SQL.Clear;
form1.Query1.SQL.Add('Select MAX(領用數量) as 最大領用量,AVG(領用數量) as 平均領用量 from A_OUT where 物品名稱="' edit1.text '" and 使用者="' edit2.text"'');
form1.query1.open;

請問要怎麼修改
才可以讓dbgrid依使用者區別,分開顯示多筆資料

假設物品名稱:A
每個不同 使用者 分開做計算
如何才能得到如下表這樣的DBGRID?
最大領用量平均領用量使用者
10075小明
7055小華


--------------------------------------------------------------------------------
問題2
button on click 事件
begin
table1.append;
table1.fieldbyname('欄位名稱').asstring:=edit1.text
table1.post;

dbgrid1 連結datasource1
往往dbgrid 會即時顯示新增的資料

但如果
begin
table1.edit;
table1.fieldbyname('欄位名稱').asstring:=edit1.text
talbe1.post;

這樣的做法 dbgrid 都不會即時改變
一定要按下refresh 才會顯示出 修改後的資料

我添加了一些 table1.active:=true 或是 datasource1.active:=true
table1.refresh; 等等 方法...
dbgrid 還是一樣 ~都沒有辦法即時顯現修改後的資料
請問該怎麼做呢?@@
編輯記錄
g9614721 重新編輯於 2009-03-07 01:41:59, 註解 無‧
g9614721 重新編輯於 2009-03-07 01:42:39, 註解 無‧
g9614721 重新編輯於 2009-03-07 01:43:04, 註解 無‧
frappe
中階會員


發表:88
回覆:114
積分:95
註冊:2008-10-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-07 04:57:41 IP:115.83.xxx.xxx 訂閱
DBGrid和Query或Table資料是連動的,
你的DBGrid的DataSource確定有連對Query或Table嗎?
DataSet有哪些資料,DBGrid就有哪些資料

還是你的Delphi版本太舊?
st33chen
尊榮會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-07 07:54:43 IP:122.116.xxx.xxx 未訂閱
您好,

問題一, 用 group by 使用者

問題二, 沒實測是否真edit後不能refresh, 不過, 先請試一下 dbgrid1.refresh; 看看.

參考一下.
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-03-07 09:14:31, 註解 無‧
g9614721
一般會員


發表:27
回覆:51
積分:15
註冊:2008-07-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-07 16:12:53 IP:220.131.xxx.xxx 訂閱
st33chen 您好
group by 可以用^^
可以顯示出我要的謝謝~
但又發現一個問題= ="


但我剛試了一下 好像沒有辦法把物品名稱 加在前面 因為使用了groupby

物品名稱 最大領用量 平均領用量 使用者
A 100 75 小明
A 70 55 小華

問題2
dbgrid.refresh 也不行= =
我是delphi 7版本

程式碼如下

table1 : 零用金支出的紀錄
table2 : 一些零用金的支出的項目,如看電影250元..搭車50元..

button on click 事件

begin
locate table2 支出項目
有的話就進行edit
沒有的話就append 新的支出項目到table2
end;

append 的話 dbgrid 會改變
但edit 就不會= =" 必須要按DBNavigator的重新整理...
添加程式碼 Datasource2.refresh; table2.refresh ;等都沒用= ="
一定要用按的.........

===================引 用 st33chen 文 章===================
您好,

問題一, 用 group by 使用者

問題二, 沒實測是否真edit後不能refresh, 不過, 先請試一下 dbgrid1.refresh; 看看.

參考一下.
st33chen
尊榮會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-03-07 20:18:34 IP:122.116.xxx.xxx 未訂閱
問題一, 我覺得您應該會自行推演出來才對, 不然也應該看一下 group 的用途才對.
group by 使用者, 物品名稱

問題二. 您沒說明您的程式碼, 我自行用下列的程式測沒有問題啊, 不用 refresh 就 ok 了.
不知您是如何做的.
我測的是 d6, adotable, mdb.

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
adotable1.Insert;
adotable1.FieldByName('stk_no').Value := '1101';
adotable1.FieldByName('yr').Value := '2005';
adotable1.FieldByName('sales10').Value := 100;
adotable1.post;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
adotable1.Edit;
adotable1.FieldByName('sales10').Value := 110;
adotable1.post;
end;
end.
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
g9614721
一般會員


發表:27
回覆:51
積分:15
註冊:2008-07-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-03-08 17:04:48 IP:220.131.xxx.xxx 訂閱
= =我一直忘了group by 的存在了.........呆了..還在那邊試老半天!

感謝st33chen

問題二 我剛重做了一次又OK了= ="怪怪 3Q~~
===================引 用 st33chen 文 章===================
問題一, 我覺得您應該會自行推演出來才對, 不然也應該看一下 group 的用途才對.
group by 使用者, 物品名稱

問題二. 您沒說明您的程式碼, 我自行用下列的程式測沒有問題啊, 不用 refresh 就 ok 了.
不知您是如何做的.
我測的是 d6, adotable, mdb.

unit Unit1;
?
interface
?
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, ADODB;
?
type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
?
var
Form1: TForm1;
?
implementation
?
{$R *.dfm}
?
procedure TForm1.Button1Click(Sender: TObject);
begin
adotable1.Insert;
adotable1.FieldByName('stk_no').Value := '1101';
adotable1.FieldByName('yr').Value := '2005';
adotable1.FieldByName('sales10').Value := 100;
adotable1.post;
end;
?
procedure TForm1.Button2Click(Sender: TObject);
begin
adotable1.Edit;
adotable1.FieldByName('sales10').Value := 110;
adotable1.post;
end;
?
end.
系統時間:2024-05-15 0:48:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!