2013-04-10 83 views
1

我需要添加額外的數據到我的TEMP表中,在按鈕點擊底部顯示。 我需要在表中複製並插入所有FROM-TO-DAYS事件。 RATE_PRICE將預先確定爲&,對於所有新插入(插入時)都是相同的。還插入了 。 enter image description here插入部分現有的數據

例如:我有加牀加,它費15歐元。 現在我想,當我檢查一個複選框(並單擊一個按鈕)將該值(15)插入TEMP表中,但是 它必須遵循網格中顯示的日期值。 我想要在TEMP表中添加一個名爲EXTRA的額外字段,除非選中 複選框,否則這個字段將不可見。因此,當我檢查添加加牀的選項,加牀將按照顯示。價格將是15日... 日期。

如何插入所需的數據?

UPDATE

我做這件事是按鈕點擊:

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

好的。所以去做吧。你有什麼問題? – 2013-04-10 12:55:27

+0

如何插入所需的數據? – user763539 2013-04-10 13:00:11

+0

難道你不能像插入任何其他數據一樣插入它嗎?我不明白這個問題。 – 2013-04-10 13:02:43

回答

0

您應該向新讀者指出您所指的是前一個問題(代碼)。沒有這些信息,他們無法理解你的問題。 Hotel prices spanning multiple dates issue

現在到您的問題。

忘記你的with absquery4 do begin,有一個更簡單的方法。
只有2行新代碼添加到您的現有代碼中。

  • 將您的價目表擴大到您需要的所有額外費用。
  • 例如DBLMSExtraBed:'價格: 15,00`。
  • 添加一個新的按鈕標題:='添加附加項'。
  • clickEvent指向您的CalculationButtonClick。
  • 在CalculationButton中進行測試單擊該按鈕時觸發該事件。
  • DBLMSExtraBed填寫ROOM_TYPE TEditfield。
  • 添加以下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行,最後是:

enter image description here

隨着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'); 

更新

只有蒂普:

創建您的Temp表中的字段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; 
+0

關於你提到的原始問題:今天我注意到一些奇怪的事情:如果我選擇日期在12.4.2013和26.4.2013之間(價格在26.4變化),該計劃只給我13天。應該是14天。 '失蹤'日顯示爲從2013年4月26日至2013年4月26日'0日'。基本上,如果我選擇12.4.2013至2013年4月26日或2013年4月12日至2013年4月25日,最終價格是相同的。這裏有什麼問題?看起來從25到26的夜晚不算? – user763539 2013-04-12 22:42:46

+0

看看你的數據庫是'2013-01-02 00:00:00','2013-04-26 00:00:00'的值嗎?重要的'00:00:00' – 2013-04-12 22:56:37

+0

你是對的...我隱藏了時間,所以這就是爲什麼我無法檢查它所以,以防萬一,我試過label1.Caption:= timetostr(cxDateEdit.Time);這是我發現時間都錯了的地方。永遠不會想到它。謝謝 ! – user763539 2013-04-14 23:03:04