向dbgrid插入數據,並實時顯示 |
答題得分者是:st33chen
|
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
請問您說的操作是指什麼呢?連接DB??新增修改查詢刪除??
用什麼資料庫??Access??MSSQL??MYSQL??...哪一種? 以Access為例,先提供幾個有關怎麼連Access請看下面這篇 http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=85597 http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=83073#4(小小的解說) http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=64086 假如還想要其他的資訊 可以先在版上搜尋相關文章^^ ===================引 用 blue36sea 文 章=================== 隨機的産生一系列從45到60的實數(比如45.124),並將其插入dbgrid中作為“字段1”顯示數來,並在‘字段2’顯示當前的時分秒,並在‘字段3’顯示當前的年月日,同時將隨即産生的數據在tchart中繪制成曲線,最後還要根據日期來進行查詢當天的實時曲線。 因為對數據庫方面的操作不知道怎麽弄,還希望各個高手能幫忙指點迷津,謝謝? |
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
在對ADOQUERY1進行添加數據操作的時候,
fieldbyname('time').Asstring:=formatdatetime('hh:mm:ss',now); fieldbyname('date').Asstring:=formatdatetime('yyyy-mm-dd',now); 使用的是access數據庫,定義的time字段為長時間格式'17:12:00';但是在程序運行時time字段顯示的是‘1989-11-10 下午 03:02:03’的格式,請問為什麽會這樣? 還有應為我使用tchart畫圖,其中橫坐標顯示的是時間格式為'hh:mm:ss',但是因為遇到格式轉換問題,說formatdatetime('hh:mm:ss',now);是string類型,而tchart的橫坐標是double型,類型不匹配,但是我又不知道怎麽解決,就只定義了Series1.XValues.DateTime := True ;結果橫坐標就顯示“1989-11-10 ”,後面每畫一個數,橫坐標的日期就加一天的那種格式,好奇怪哦? |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
我測試的例子如下, procedure TForm1.Button1Click(Sender: TObject); var ii: integer; begin series1.AddXY(1.123,2); series1.AddXY(1.523,3); series1.AddXY(2.20124312, 4); series1.XValues.DateTime := true; for ii := 0 to series1.Count-1 do begin series1.XLabel[ii] := formatdatetime('hh:nn:ss', series1.XValues[ii]); end; end; 不管存入, 只管取出值後如何顯示. (因為 datetime 用實數存值, 您存 time 時, date 部份為 0 在我 d6 他代表 1899-12-30.) 是不是您所要的, 參考一下
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
procedure TForm1.Timer2Timer(Sender: TObject); var y,x:double; begin randomize; x:=random(15000)/1000 45.000; y:=a*power(x,2) b*x c; with adotable1 do begin open; edit; append; fieldbyname('weight').AsFloat:=x; fieldbyname('flow').AsFloat:=y; fieldbyname('time').Asstring:=formatdatetime('hh:nn:ss',now);? fieldbyname('date').Asstring:=formatdatetime('yyyy-mm-dd',now); post; end; Series1.XValues.DateTime := True ; // series1.XLabel:= formatdatetime('hh:nn:ss', Series1.XValues);? //Series1.XValues.Value:=formatdatetime('hh:mm:ss',now);? //Series1.XValues.Value:= strtodatetime(formatdatetime('hh:mm:ss',now));? Series1.Addy(y,'',clTeeColor); end; (1)我這裏要顯示的是X坐標的值,因為我SERIES畫圖操作我是定義在timer裏面的,所以是橫坐標顯示的是當前時間,timer每秒觸發一次,所以X橫坐標的值要顯示的依次是‘18:02:14’'18:02:15'‘18:02;:16’'18:02:17'...這樣的格式。(2)fieldbyname('time').Asstring:=formatdatetime('hh:nn:ss',now);?在DBGRID中顯示的時間格式是‘1899-12-30 下午03:02:14’,請問這個要怎麽把它變為‘15:02:14'這種格式?
|
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
procedure TForm1.Timer2Timer(Sender: TObject); var y,x:double; begin randomize; x:=random(15000)/1000 45.000; y:=a*power(x,2) b*x c; with adotable1 do begin open; edit; append; fieldbyname('weight').AsFloat:=x; fieldbyname('flow').AsFloat:=y; fieldbyname('time').Asstring:=formatdatetime('hh:nn:ss',now); fieldbyname('date').Asstring:=formatdatetime('yyyy-mm-dd',now); post; end; Series1.XValues.DateTime := True ; // series1.XLabel:= formatdatetime('hh:nn:ss', Series1.XValues); //Series1.XValues.Value:=formatdatetime('hh:mm:ss',now); //Series1.XValues.Value:= strtodatetime(formatdatetime('hh:mm:ss',now)); Series1.Addy(y,'',clTeeColor); end;
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
datetime 格式的欄位就用一個欄位存, 不要分 date 一欄, time 一欄
後來要用時, 當用到 date 部份就轉 yyyy-mm-dd 格式, 用到 time 部份時就轉成 hh:nn:ss 格式 這樣會不會比較簡單 依您目前的設計 雙擊 dbgrid 所對應的 dataset (假設為 query1) 會出現一個 欄位編輯視窗 找到 time 的欄位, 指定其 display format 看看
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
在我的DELPHI6中,字段time欄沒有displayformat屬性,dbgrid1.Columns[2]指的是time字段,
Tdatetimefield(dbgrid1.Columns[2]).displayformat:='hh:nn:ss'; 使用上面的來設置格式後,運行出錯. ===================引 用 st33chen 文 章=================== datetime 格式的欄位就用一個欄位存, 不要分 date 一欄, time 一欄 後來要用時, 當用到 date 部份就轉 yyyy-mm-dd 格式, 用到 time 部份時就轉成 hh:nn:ss 格式 這樣會不會比較簡單 依您目前的設計 雙擊 dbgrid 所對應的 dataset (假設為 query1) 會出現一個 欄位編輯視窗 找到 time 的欄位, 指定其 display format 看看 |
blue36sea
一般會員 發表:13 回覆:35 積分:23 註冊:2008-10-12 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
我測試的例子如下, procedure TForm1.Button1Click(Sender: TObject); var ii: integer; begin series1.AddXY(1.123,2); series1.AddXY(1.523,3); series1.AddXY(2.20124312, 4); series1.XValues.DateTime := true; for ii := 0 to series1.Count-1 do begin series1.XLabel[ii] := formatdatetime('hh:nn:ss', series1.XValues[ii]); end; end; 不管存入, 只管取出值後如何顯示. (因為 datetime 用實數存值, 您存 time 時, date 部份為 0 在我 d6 他代表 1899-12-30.) 是不是您所要的, 參考一下
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |