我在frmMain里声明了一个public的integer变量RoomID,并给了值;但我在一个子窗体里引用的时候为何提示我RoomID没有定义?
以下是在frmMain里的声明:
public
RoomID:Integer; 以下是在frmMain里的一个处理过程:
procedure TfrmMain.PopHotelRoom_ModifyClick(Sender: TObject);
var RoomName:String;
begin
RoomName:=lvwMain.Selected.SubItems.Strings[0]; //取得所选房型的名称
With qryMain do
begin
SQL.Clear;
SQL.Add('Select * From G_HotelPrice Where P_Room = ''' + RoomName + ''' and P_HotelID = ' + InttoStr(HotelID) + '');
Open;
RoomID:=FieldByName('P_ID').AsInteger; //取得所选房型的ID
Close;
end;
Application.CreateForm(TfrmModifyHotelRoom, frmModifyHotelRoom);
frmModifyHotelRoom.ShowModal;
frmModifyHotelRoom.Free;
end;以下是在一个子窗体里的引用:
procedure TfrmModifyHotelRoom.ModifyHotelRoom_LoadData;
begin
With frmMain.qryMain do
begin
SQL.Clear;
SQL.Add('Select * From G_HotelPrice Where P_ID = ' + InttoStr(RoomID) + '');
Open;
edtRoom.Text:=FieldByName('P_Room').AsString;
edtMSPrice.Text:=FloattoStr(FieldByName('P_MarketPrice').AsFloat);
edtMemberPrice.Text:=FloattoStr(FieldByName('P_MemberPrice').AsFloat);
edtProcotolPrice.Text:=FloattoStr(FieldByName('P_ProtocolPrice').AsFloat);
edtYJ.Text:=FloattoStr(FieldByName('P_HotelYJ').AsFloat);
cboIsCommend.Text:=FieldByName('P_NetIndex').AsString;
edtDate.Text:=FieldByName('P_Time').AsString;
memPriceMemo.Lines.Add(FieldByName('P_PriceRe').AsString);
Close;
end;
end;问题是,程序运行的时候提示:Undeclared identifier: 'RoomID'
不明白,请各位指教,谢谢。
以下是在frmMain里的声明:
public
RoomID:Integer; 以下是在frmMain里的一个处理过程:
procedure TfrmMain.PopHotelRoom_ModifyClick(Sender: TObject);
var RoomName:String;
begin
RoomName:=lvwMain.Selected.SubItems.Strings[0]; //取得所选房型的名称
With qryMain do
begin
SQL.Clear;
SQL.Add('Select * From G_HotelPrice Where P_Room = ''' + RoomName + ''' and P_HotelID = ' + InttoStr(HotelID) + '');
Open;
RoomID:=FieldByName('P_ID').AsInteger; //取得所选房型的ID
Close;
end;
Application.CreateForm(TfrmModifyHotelRoom, frmModifyHotelRoom);
frmModifyHotelRoom.ShowModal;
frmModifyHotelRoom.Free;
end;以下是在一个子窗体里的引用:
procedure TfrmModifyHotelRoom.ModifyHotelRoom_LoadData;
begin
With frmMain.qryMain do
begin
SQL.Clear;
SQL.Add('Select * From G_HotelPrice Where P_ID = ' + InttoStr(RoomID) + '');
Open;
edtRoom.Text:=FieldByName('P_Room').AsString;
edtMSPrice.Text:=FloattoStr(FieldByName('P_MarketPrice').AsFloat);
edtMemberPrice.Text:=FloattoStr(FieldByName('P_MemberPrice').AsFloat);
edtProcotolPrice.Text:=FloattoStr(FieldByName('P_ProtocolPrice').AsFloat);
edtYJ.Text:=FloattoStr(FieldByName('P_HotelYJ').AsFloat);
cboIsCommend.Text:=FieldByName('P_NetIndex').AsString;
edtDate.Text:=FieldByName('P_Time').AsString;
memPriceMemo.Lines.Add(FieldByName('P_PriceRe').AsString);
Close;
end;
end;问题是,程序运行的时候提示:Undeclared identifier: 'RoomID'
不明白,请各位指教,谢谢。
begin
With frmMain.qryMain do
begin
SQL.Clear;
SQL.Add('Select * From G_HotelPrice Where P_ID = ' + InttoStr(frmMain.RoomID) + '');
Open;
//....
Close;
end;
end;
这下就对了;
要:
frmMain.RoomID才可以;
或者你这样定义:
Unit FrmMain 所地应的Unit;
//.....
//.....
var
FrmMain : TFrmMain;
RoomID : Integer;
//.....
这样的话,这儿就可以如你上边那样引用;
uses main;
VAR
frmMain:TfrmMain;
ROOMID:INTEGER;
问题是,你引用的话,要带上窗体名:如上边的更正:
SQL.Add('Select * From G_HotelPrice Where P_ID = ' + InttoStr(frmMain.RoomID) + '');