我目前正在用labview做品質管制,我是利用rs232的游標卡尺接收資料後然後在傳送到access裡,我試著做1 次可傳送10筆資料但是就是不行,只能傳送一筆資料,所以資料庫裡面就只有一行而已(如下圖),如果我想要1次傳送10筆資料, 請問程式要如何寫

2004-05-23_221716_SQLforRS232.vi
我目前正在用labview做品質管制,我是利用rs232的游標卡尺接收資料後然後在傳送到access裡,我試著做1 次可傳送10筆資料但是就是不行,只能傳送一筆資料,所以資料庫裡面就只有一行而已(如下圖),如果我想要1次傳送10筆資料, 請問程式要如何寫

2004-05-23_221716_SQLforRS232.vi
可能沒有辦法一次上傳2D資料到SQL資料庫,一次好像只能傳1D的資料到SQL資料庫。(如果您後來知道怎麼做的話,也請告訴 我)
但是可以一次從SQL資料庫中,取出2D的資料,範例「Example - Fetch a Table.vi」就是這樣子的。其實你仔細看「Example - Fetch a Table.vi」內部的程式,會發現其實它也是靠迴圈來達成,並不是真正從SQL資料庫中,一次讀取2D的資料。

我在寫網頁的時候,也是一次丟1D資料到SQL資料庫,或是一次從SQL資料庫傳回1D資料。你所看到的網頁內容,好想是2D資 料,但是那是靠回圈才辦到的唷。
不過,在程式的寫法上,可以動一些手腳,讓電腦的負擔減少。
如下圖,只要把「SQL Execute」放在迴圈內就可以了。其他的四個icon放在迴圈外,這樣就可以節省資源。

Benjamin38131.4062731481感恩,馬上去試看看
2004-11-29_155746_writerSQL-1.vi
上面是我打的程式.想請問當我只使用資料庫的部份時(即本程式的下半部.資料輸入為自行輸入一個STRING)寫入ACCESS時並不會發生任何錯誤.但當我將資料庫輸入的部份接上掃描頻率時.卻會發生錯誤.錯誤名稱如下.
P.S 當錯誤出現時按CONTINUE.會寫入一次.但又會跳出錯誤視窗
Error 4 occurred at Write File+ (string): Write File
Possible reason(s):
LabVIEW: End of file encountered.
---
NI-488: Invalid argument or arguments.
而資料寫入的方面也是只能寫入1D.我照著前面提到的方法將SQL EXECUTE放入迴圈內.但我實在想不到.如何能再寫入第二個欄位.是要靠SQL語言來指定欄位.還是用迴圈有更明確的解決方式
問題蠻多的實在很抱歉...希望各位大大幫忙解決...感激不盡
系統版本
XP
LABVIEW7
資料庫
目前使用ACCESS
最終會使用MYSQL
madmask38320.6802777778
[QUOTE=Benjamin]
但是可以一次從SQL資料庫中,取出2D的資料,範例「Example - Fetch a Table.vi」就是這樣子的。其實你仔細看「Example - Fetch a Table.vi」內部的程式,會發現其實它也是靠迴圈來達成,並不是真正從SQL資料庫中,一次讀取2D的資料。
[/QUOTE]
這邊更正一下 執行SQL中的SELECT指令後 的確是從資料庫一次取回2D的資料 但是屬於String 還不是Array形式 ( ADO Recordset GetString.vi ), LabSQL中再透過迴圈及搜尋字串Pattern的方式來將整個String變化成Array, MySQL中若透過MySQL的console下查詢指令 也是一次就傳回2D的資料
我看了一下MySQL Administrator做出來的備份檔(其實就是一連串的SQL指令) 的確可以一次插入多筆資料 例如:
INSERT INTO `TABLE` (`ITEM`) VALUES('DATA1'),('DATA2')....('DATA14);
上例中每筆資料僅有一個欄位 欄位名稱為ITEM
我看到的MySQL SQL備份檔在一個INSERT指令最多用了14個VALUE 也就是說單一指令插入14個筆資料 是否更多還有待試驗 如果INSERT指令可以這樣用的話 那或許UPDATE指令亦可 還有待有空的人幫忙試驗一下
不過不確定Access也可以這樣用啦 有些SQL集是各家資料庫系統的私有擴充 例如若想自MySQL一次僅傳回一筆資料 使用SELECT * FROM 資料表 limit 1,1 用在ACCESS上就會出苞 因為limit是MySQL的私有擴充 要轉換後端使用的資料庫系統時 這點要多注意一下
[QUOTE=Ozzy]
我看了一下MySQL Administrator做出來的備份檔(其實就是一連串的SQL指令) 的確可以一次插入多筆資料 例如:
INSERT INTO `TABLE` (`ITEM`) VALUES('DATA1'),('DATA2')....('DATA14);
上例中每筆資料僅有一個欄位 欄位名稱為ITEM
[/QUOTE]
那意思是說我在table的位置打上表格名稱.item打上我指定的欄位名稱
那就可以在相同的表格中.由於輸入的item不同.所以資料會存到不同的欄位(但仍在同一表格內).也不會發生輸入值與目標欄位不符的問題
不知這樣我的看法正確ㄇ???
[QUOTE=madmask][QUOTE=Ozzy]
我看了一下MySQL Administrator做出來的備份檔(其實就是一連串的SQL指令) 的確可以一次插入多筆資料 例如:
INSERT INTO `TABLE` (`ITEM`) VALUES('DATA1'),('DATA2')....('DATA14);
上例中每筆資料僅有一個欄位 欄位名稱為ITEM
[/QUOTE]
那意思是說我在table的位置打上表格名稱.item打上我指定的欄位名稱
那就可以在相同的表格中.由於輸入的item不同.所以資料會存到不同的欄位(但仍在同一表格內).也不會發生輸入值與目標欄位不符的問題
不知這樣我的看法正確ㄇ???
[/QUOTE]
當然在同一表格內 您的SQL指令不是已指定資料表名稱了嗎? 不過請注意 一個VALUE括號代表一筆資料 我上面打的例子會新增14筆資料到表格中
不過我們說的欄位/表格好像定義不一樣? 我說的表格意思等同於ACCESS中的資料表
貼個我剛剛在MySQL Command Line裡試的例子吧 同時寫入兩筆資料
mysql> show tables
-> ;
+----------------+
| Tables_in_zero |
+----------------+
| boob |
| recycle |
| test |
| zero |
+----------------+
4 rows in set (0.00 sec)
mysql> describe test;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| A | text | | PRI | | |
| B | text | | | | |
+-------+------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> INSERT INTO `TEST` (`A`,`B`) VALUES ('CSR','IBM'),('AMD','ATI');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM TEST;
+-----+-----+
| A | B |
+-----+-----+
| CSR | IBM |
| AMD | ATI |
+-----+-----+
2 rows in set (0.00 sec)
就是以INSERT INTO `TEST` (`A`,`B`) VALUES ('CSR','IBM'),('AMD','ATI');來一次寫入資料
希望以上對有使用到LabSQL與MySQL的各位同好有所幫助
感謝大大熱心ㄉ講解
我的問題都已經解決了
接下來著手於登入的問題
實在非常ㄉ感謝