直播推薦
企業(yè)動態(tài)
- 首都共享中央廚房首批項(xiàng)目在平谷區(qū)開工 助力北京打造食品安全城市
- 深耕專業(yè)沃土:東莞皓天試驗(yàn)設(shè)備有限公司啟動全員新款設(shè)備知識攻堅(jiān)行動
- ?凌晨裝車、跨省奔襲:皓天試驗(yàn)設(shè)備技術(shù)團(tuán)隊(duì)的秦皇島交付記
- 中國石油和化工勘察設(shè)計(jì)協(xié)會電氣設(shè)計(jì)專業(yè)委員會2025年年中工作會議
- 從構(gòu)建方法論到服務(wù)加碼,華為加速釋放AI時(shí)代制造業(yè)數(shù)智潛能
- 銳呈NTP網(wǎng)絡(luò)時(shí)鐘在內(nèi)蒙滿洲里熱電廠成功投運(yùn)
- 柔性生產(chǎn)vs僵化成本,U9 cloud如何為智造企業(yè)重構(gòu)“成本基因”?
- 嚴(yán)苛測試護(hù)航半導(dǎo)體品質(zhì):浙江企業(yè)添TEE-408PF快速溫變箱
推薦展會
隨著控制系統(tǒng)功能的增強(qiáng)與多系統(tǒng)之間數(shù)據(jù)共享需求的增大,組態(tài)軟件與關(guān)系數(shù)據(jù)庫之間的通訊也愈加頻繁,二者之間的數(shù)據(jù)共享也變得越來越重要。隨著業(yè)務(wù)需求的逐漸增大,怎樣將復(fù)雜的通訊與功能實(shí)現(xiàn)簡單化也成為了眾多商家的一個重要競爭點(diǎn)。為方便廣大用戶,紫金橋組態(tài)軟件特推出一新的功能組件——ObDataTable,通過該組件,用戶可以很簡單的實(shí)現(xiàn)紫金橋組態(tài)軟件與關(guān)系數(shù)據(jù)庫的數(shù)據(jù)共享。組件ObDataTable作為中間媒介,將紫金橋組態(tài)軟件中的自由報(bào)表與關(guān)系數(shù)據(jù)庫按照一定的關(guān)系連接起來。
圖1 數(shù)據(jù)流向關(guān)系
對于一些復(fù)雜的綜合報(bào)表,報(bào)表中的數(shù)據(jù)來源或者去向并不統(tǒng)一。比如我們把數(shù)據(jù)劃分為好幾個區(qū)域,區(qū)域A中的數(shù)據(jù)要存儲到表A中,區(qū)域B中的數(shù)據(jù)要存儲到表B中等等。按照通常的方法,會通過紫金橋內(nèi)的SQL函數(shù)寫一些腳本將數(shù)據(jù)存到關(guān)系庫中,但是這樣的方法比較復(fù)雜,且代碼量通常都比較大,編寫起來比較麻煩,而現(xiàn)在通過組件ObDataTable將會把工作簡單化,下面講解具體實(shí)現(xiàn)方法。
在講解實(shí)現(xiàn)方法時(shí),先介紹一下四個函數(shù):
1、 GetFromTable(),此為自由報(bào)表函數(shù),函數(shù)功能為從ObDataTable中獲得數(shù)據(jù)。
2、 SetToTable(),此為自由報(bào)表函數(shù),函數(shù)功能為將數(shù)據(jù)放置到ObDataTable中。
3、 SQLGetToTable(),此為紫金橋內(nèi)部SQL函數(shù),函數(shù)功能為將數(shù)據(jù)集中全部數(shù)據(jù)復(fù)制到ObDataTable中。
4、 SQLInsertFromTable(),此為紫金橋內(nèi)部SQL函數(shù),函數(shù)功能為將ObDataTable中數(shù)據(jù)插入到數(shù)據(jù)庫中。
圖2 報(bào)表區(qū)域劃分說明
如上圖所示,該報(bào)表劃分為三個區(qū)域。首先,要在關(guān)系庫中建立三個表,分別為表A,表B,表C。按照報(bào)表中三個區(qū)域的規(guī)格建立相應(yīng)的字段,注:關(guān)系庫表中的字段數(shù),類型要與報(bào)表中的*對應(yīng)。
其次,編寫數(shù)據(jù)存入與讀取腳本。在向關(guān)系庫插入數(shù)據(jù)時(shí)分為兩個步驟:
一、 將報(bào)表中的數(shù)據(jù)存入到ObDataTable中。期間調(diào)用函數(shù)報(bào)表函數(shù)SetToTable(),該函數(shù)能夠報(bào)表中的區(qū)域,如選擇的為區(qū)域A,函數(shù)執(zhí)行過后,區(qū)域A中的數(shù)據(jù)則會全部存入到ObDataTable中。如:#FreeReport1.SetToTable(1,1,7,10,#ObDataTable,0)。函數(shù)意為將自由報(bào)表FreeReport1的區(qū)域1至7列,1至10行的數(shù)據(jù)全部存入到ObDataTable中。
二、 將存入到ObDataTable中的數(shù)據(jù)寫入到關(guān)系庫的表中。期間調(diào)用函數(shù)SQLInsertFromTable(),該函數(shù)執(zhí)行過后將會將ObDataTable中的數(shù)據(jù)寫入到關(guān)系庫中相應(yīng)的表中。該函數(shù)執(zhí)行之前要調(diào)用SQLConnect()函數(shù)。如:
int ConnectID;
SQLConnect((ConnectID,”數(shù)據(jù)源描述”);
SQLInsertFromTable(ConnectID,"表A",#ObDataTable1);
其中ConnectID為執(zhí)行SQLConnect()之后的數(shù)據(jù)源表示返回值。數(shù)據(jù)源描述需要人為的填寫。
這兩步操作之后,區(qū)域A中的數(shù)據(jù)則會全部寫入到關(guān)系庫表A中。
從關(guān)系庫中讀取數(shù)據(jù)時(shí)同樣也分為兩個步驟:
一、 將關(guān)系庫表中的數(shù)據(jù)讀取到ObDataTable中。期間要調(diào)用函數(shù)SQLGetToTable(),該函數(shù)要與SQLSelect()函數(shù)配合使用。首先要將關(guān)系庫表中符合條件的數(shù)據(jù)通過SQLSelect()函數(shù)查出來,在通過SQLGetToTable()函數(shù)寫入到ObDataTable中。如:
int ConnectID;
SQLConnect((ConnectID,”數(shù)據(jù)源描述”);
SQLSelect(ConnectID,"表A","查詢條件表達(dá)式");
SQLGetToTable(#ObDataTable1);
二、 將ObDataTable中的數(shù)據(jù)寫入到自由報(bào)表中。期間要調(diào)用自由報(bào)表函數(shù)GetFromTable(),該函數(shù)可以將ObDataTable中的數(shù)據(jù)寫入到自由報(bào)表中的區(qū)域。
如:#FreeReport1.GetFromTable(1,1,#ObDataTable1,0);函數(shù)意為將ObDataTable中的數(shù)據(jù)寫入到自由報(bào)表從*行,*列開始的區(qū)域中。
這兩步操作過后,關(guān)系庫表A中符合查詢條件的數(shù)據(jù)則會寫入到自由報(bào)表區(qū)域A中。區(qū)域B,區(qū)域C的同理。
ObDataTable的出現(xiàn),使紫金橋組態(tài)軟件與關(guān)系庫的通訊不在像以往那樣繁瑣,且功能實(shí)現(xiàn)簡單,用戶通過少量的腳本即可實(shí)現(xiàn)預(yù)想的功能,避免了大量的編寫腳本時(shí)存在的潛在錯誤,方便廣大用戶操作使用。
免責(zé)聲明
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.decaoba.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
- 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
2026杭州國際人形機(jī)器人與機(jī)器人技術(shù)展覽會
展會城市:杭州市展會時(shí)間:2026-05-14