Grid Index out of range?? |
尚未結案
|
JamesLiang
初階會員 發表:54 回覆:78 積分:31 註冊:2003-02-13 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 請教先進..遇到grid index out of range 應該如何解決? 多謝1.這應該是你的table 有index才會發生, 不知道你出現的是否是這個錯誤畫面 (如果看不到圖, 請點 http://delphi.ktop.com.tw/forum.asp?FORUM_ID=130看, 我不太會貼圖) 如果是, 那是你用滑鼠點到紅框所在的Inditator 位置會發生, 原因我也在查 -不明(如果沒有索引則不會), 現在我也查不到點到那個地方所會觸發的行為? 2.如果不是, 則應該是index有問題, 試著重建index看看, 3.當然沒有實際看到完整的操作不容易斷言, 不過大致上是上述兩種情況! 發表人 - P.D. 於 2003/04/13 15:55:42 |
JamesLiang
初階會員 發表:54 回覆:78 積分:31 註冊:2003-02-13 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
JamesLiang
初階會員 發表:54 回覆:78 積分:31 註冊:2003-02-13 發送簡訊給我 |
引言 :查看一下你有沒有 DBGrid 事件引至跳出可接受範圍 版主先生..我在本page的dbgrid只有兩個事件被引用onkeypress與oncolexit
分別處理enter鍵與查核是否重複鍵值而已,因此不知道你所謂的接受範圍是何
多謝,另外我run另一支程式時出現list index out of bound(0),又是為何??
我使用F7的方式追蹤問題出現在form create,程式如下
procedure TQuery_OPlist.FormCreate(Sender: TObject);
var
I : Integer;
ProdName : String;
begin
DataModule1.AQ_RDOPlist.Open;
DataModule1.AT_RDProdName.close;
DataModule1.AT_RDProdName.Open;
DataModule1.AT_RDMaster.Open;
DataModule1.DS_RDMasterAQ.dataset := DataModule1.AT_RDMaster;
PageControl_RDMain.ActivePage := TabSheet_RDMain;
ActiveDS.Dataset := DataModule1.AQ_RDOPList;
with DataModule1.AT_RDProdName do
begin
For I :=0 to RecordCount - 1 do
begin
ProdName := Fields[1].AsString;
ComboBox1.Items.Add(ProdName);
next;
end;
end;
end;
是乎出現在combobox無法寫入資料.
多謝
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
改成這樣
ComboBox1.Style:=csDropDown;//可加入資料
with DataModule1.AT_RDProdName do
begin
for I := 0 to RecordCount - 1 do
begin
ProdName := Fields[I].AsString;
ComboBox1.Items.Add(ProdName);
// next;//這一行不用了
end;
end;
ComboBox1.Style:=csDropDownList;//不可加入資料
另外ComboBox1.Style不能設為csDropDownList,否則資料加不進去喔...TRY TRY SEE
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
JamesLiang
初階會員 發表:54 回覆:78 積分:31 註冊:2003-02-13 發送簡訊給我 |
|
skp
一般會員 發表:14 回覆:19 積分:6 註冊:2002-11-08 發送簡訊給我 |
|
JamesLiang
初階會員 發表:54 回覆:78 積分:31 註冊:2003-02-13 發送簡訊給我 |
各位先進..我查過程式既沒有index也沒有隱藏的欄位.出現的訊息是list index out of bound(0),我後端是SQLServer,我實在不清楚問題何在,此表單
是查詢的表單因此均使用adoquery.出現錯誤訊息的時機是當form開啟時以及
點選dbgrid,程式如下
unit Q_RDOPList; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, StdCtrls, ComCtrls,
Buttons; type
TQuery_OPlist = class(TForm)
DBNavigator1: TDBNavigator;
PageControl_RDMain: TPageControl;
TabSheet_RDDetail: TTabSheet;
TabSheet_OPCondition: TTabSheet;
TabSheet_Evaluation: TTabSheet;
TabSheet_RDMain: TTabSheet;
Label1_CodeNo: TLabel;
Label2_RefNo: TLabel;
Label3_PD: TLabel;
Label4_SD: TLabel;
Label5_PRID: TLabel;
Label6_PRLD: TLabel;
Label7_CD: TLabel;
DBText1_CodeNo: TDBText;
DBText2_RFNO: TDBText;
DBText3_PD: TDBText;
DBText4_SD: TDBText;
DBText5_PID: TDBText;
DBText6_PDLD: TDBText;
DBText7_CD: TDBText;
DBGrid_Evaluation: TDBGrid;
DBGrid_OPCondition: TDBGrid;
DBGrid_Ingredient: TDBGrid;
Label_Title: TLabel;
Label_Title2: TLabel;
Image1: TImage;
BitBtn1: TBitBtn;
ActiveDS: TDataSource;
StatusBar1: TStatusBar;
DBGrid_RDOPList: TDBGrid;
ComboBox1: TComboBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure DBGrid_IngredientDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
procedure BitBtn1Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure ActiveDSStateChange(Sender: TObject);
procedure PageControl_RDMainChange(Sender: TObject);
procedure DBGrid_RDOPListEnter(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end; var
Query_OPlist: TQuery_OPlist; implementation uses VFF_MIS_DataModule2;
var
R_ProdID : String;
C_KeyValue : String;
FindResult : Variant;
SQLStr : String;
Const
DatasetStates : array[TDatasetState] of string =
('Not Active','Browsing','Editing','Inserting','','','','','','','','','');
HelpTopicEdit = 2;
HelpTopicBrowse = 3; {$R *.dfm} procedure TQuery_OPlist.ActiveDSStateChange(Sender: TObject);
begin
try
with ActiveDS do
if Dataset <> nil then
Statusbar1.Panels[0].Text := Format('[%S:%S]',[Dataset.Name,DatasetStates[State]]);
except
Statusbar1.Panels[0].Text := 'UnKnow State';
end;
end; procedure TQuery_OPlist.FormCreate(Sender: TObject);
var
I : Integer;
ProdName : String;
begin
DataModule2.AQ_RDOPlist_2.Open;
DataModule2.AT_RDProdName_2.Open;
DataModule2.AT_RDMaster_2.Open;
PageControl_RDMain.ActivePage := TabSheet_RDMain;
ActiveDS.Dataset := DataModule2.AQ_RDOPList_2;
with DataModule2.AT_RDProdName_2 do
begin
For I :=0 to RecordCount - 1 do
begin
ProdName := Fields[1].AsString;
ComboBox1.Items.Add(ProdName);
next;
end;
end;
end; procedure TQuery_OPlist.ComboBox1Click(Sender: TObject);
begin
DataModule2.AT_RDProdName_2.close;
DataModule2.AT_RDProdName_2.Open;
C_KeyValue := '';
C_KeyValue := ComboBox1.Text;
FindResult := DataModule2.AT_RDProdName_2.Lookup('ProductName',C_KeyValue,'ProductID');
If not varisnull(FindResult) then
R_ProdID := VartoStr(FindResult)
else
R_ProdID := '' ;
With DataModule2.AQ_RDOPlist_2 do
begin
Close;
SQL.Clear;
SQLStr := 'Select * from A_RDOPList where ProductID like ' '''' TrimRight(R_ProdID) '%' '''';
SQL.Add(SQLStr);
Prepared;
Open;
end;
end; procedure TQuery_OPlist.PageControl_RDMainChange(Sender: TObject);
begin
case PageControl_RDMain.ActivePageIndex of
3 : begin
ActiveDS.DataSet := DataModule2.AT_RDMaster_2;
end;
1 : begin
ActiveDS.DataSet := DataModule2.AQ_RDOPCondition_2;
DataModule2.AQ_RDOPCondition_2.Close;
DataModule2.AQ_RDOPCondition_2.Open;
end;
2 : begin
ActiveDS.DataSet := DataModule2.AQ_RDEvaluation_2;
DataModule2.AQ_RDEvaluation_2.Close;
DataModule2.AQ_RDEvaluation_2.Open;
end;
0 : begin
ActiveDS.DataSet := DataModule2.AQ_RDDetail_2;
DataModule2.AQ_RDDetail_2.Close;
DataModule2.AQ_RDDetail_2.Open;
end;
end;
end; procedure TQuery_OPlist.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end; procedure TQuery_OPlist.DBGrid_RDOPListEnter(Sender: TObject);
begin
ActiveDS.Dataset := DataModule2.AQ_RDOPList_2;
end; procedure TQuery_OPlist.DBGrid_IngredientDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (DataModule2.AQ_RDDetail_2.FieldByName('Adj_Weight').AsFloat <> 0) then
begin
DBGrid_Ingredient.Canvas.Font.Color := clred;
DBGrid_Ingredient.DefaultDrawColumnCell(rect,datacol,column,[]);
end;
end; procedure TQuery_OPlist.BitBtn1Click(Sender: TObject);
begin
close;
end;
end.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |