我需要在按钮点击底部显示的TEMP表中添加额外的数据。 我需要复制和插入表中所有现有的FROM - TO - DAYS。 RATE_PRICE将被预先确定&所有新插件(插入时)都相同。 并插入。
示例:我需要加床,费用为15欧元。 现在我想,当我选中一个复选框(并单击一个按钮)以在TEMP表中插入该值(15)但是 它必须遵循网格中显示的日期值。 我想到在TEMP表中添加一个名为EXTRA的额外字段,除非另有字段 选中复选框。因此,当我选择添加一张加床时,加床将跟随显示。价格将是15然后...... 日期。
如何插入所需数据?
更新
我是按下按钮点击的:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
with ABSQuery4 do begin
ABSQuery4.Close;
ABSQuery4.SQL.Clear;
ABSQuery4.SQL.Text := 'INSERT INTO TEMP (extra,Date_From,Date_To,Rate_price,Days,Total) VALUES (:a1,:a2,:a3,:a4,:a5,:a6)';
ABSquery4.Params.ParamByName('a1').asString :='TT';
ABSquery4.Params.ParamByName('a2').value := cxDateEdit1.date;
ABSquery4.Params.ParamByName('a3').value := cxDateEdit2.date;
ABSquery4.Params.ParamByName('a4').value :='1';
ABSquery4.Params.ParamByName('a5').value :=Daysbetween(cxDateEdit1.Date,cxDateEdit2.Date);
ABSquery4.Params.ParamByName('a6').value := (ABSquery4.Params.ParamByName('a4').value)*(ABSquery4.Params.ParamByName('a5').value);
ABSquery4.ExecSQL ;
ABSquery2.Refresh;
end;
end;
更优雅的方式?
答案 0 :(得分:0)
您应该让新读者指出您所指的前一个问题(代码)。没有这些信息,他们无法理解您的问题。 Hotel prices spanning multiple dates issue
现在问你的问题。
忘掉你的with absquery4 do begin
,有一种更简单的方法
只需在您现有的代码中添加2行新代码。
DBLMSExtraBed
:'价格:
15,00`。DBLMSExtraBed
填写ROOM_TYPE TEditfield。...
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');
更新:
只有Tipp:
在临时表中创建一个字段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;