您应该新读者指出您所指的上一个问题(代码)。没有这些信息,他们无法理解您的问题。跨越多个日期的酒店价格问题
现在回答你的问题。
忘记你的with absquery4 do begin
,有一个更简单的方法。
只需将 2 行新代码添加到现有代码中。
- 将您的价目表扩展到您需要的所有附加功能。
- 例如
DBLMSExtraBed
:“价格:
15,00”。
- 添加一个新的按钮标题:='Add Extras`。
- clickEvent 指向您的 CalculationButtonClick。
- 从触发事件的按钮在 CalculationButtonClick 中进行测试。
- 用 填写 ROOM_TYPE TEditfield
DBLMSExtraBed
。
- 添加以下 WITH .. IF .. THEN
...
with sender As TButton do if name='DoCalc' then begin
以上
ABSQuery2.Close;
ABSQuery2.SQL.Text:='DELETE from TEMP';
ABSQuery2.ExecSQL;
ABSQuery2.SQL.Text:='SELECT * from TEMP ORDER BY ID ';
ABSQuery2.Open;
和结束;
end;
如果事件是从AddExtrasButton
. 它不会清除您的临时表。
所以表仍然是打开的,新的数据将被插入。
现在你有 3 行,最后是:
只要AddExtrasButton
价格表中有额外内容,您就可以添加任意数量的额外内容。
使用表:
CREATE DATABASE IF NOT EXISTS pricelist;
USE pricelist;
DROP TABLE IF EXISTS `room_rates`;
CREATE TABLE `room_rates` (
`ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
`CENIK_ID` int(10) unsigned NOT NULL,
`ROOM_TYPE` varchar(45) NOT NULL,
`RATE_START_DATE` datetime NOT NULL,
`RATE_END_DATE` datetime NOT NULL,
`RATE_PRICE` decimal(5,2) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
/*!40000 ALTER TABLE `room_rates` DISABLE KEYS */;
INSERT INTO `room_rates` (`ID`,`CENIK_ID`,`ROOM_TYPE`,`RATE_START_DATE`,`RATE_END_DATE`,`RATE_PRICE`) VALUES
(1,1,'DBLMS','2013-01-02 00:00:00','2013-04-26 00:00:00','128.00'),
(2,1,'DBLMS','2013-10-22 00:00:00','2013-12-18 00:00:00','128.00'),
(3,1,'DBLMS','2013-04-26 00:00:00','2013-06-22 00:00:00','146.00'),
(4,1,'DBLMS','2013-09-21 00:00:00','2013-10-20 00:00:00','146.00'),
(5,1,'DBLMSExtraBed','2013-01-02 00:00:00','2013-06-22 00:00:00','15.00');
更新:
只有一个提示:
在您的临时表中创建一个 Field EXTRAS
。
procedure TForm1.AdvGlowButton1Click(Sender: TObject);
var
isExtra : Boolean;
[...]
with sender As TButton do if name='AdvGlowButton1' then
isExtra := False else
isExtra := True;
if NOT isExtra then begin
ABSQuery2.Close;
ABSQuery2.SQL.Text:='DELETE from TEMP';
ABSQuery2.ExecSQL;
ABSQuery2.SQL.Text:='SELECT * from TEMP ORDER BY ID ';
ABSQuery2.Open;
end;
[...]
if isExtra then
ABSQuery2.FieldByName('EXTRAS').AsString:=mem_ROOM_TYPE
else
ABSQuery2.FieldByName('ROOM_TYPE').AsString:=mem_ROOM_TYPE;