VB6你有遇到這樣情況嗎 ?增加資料表數據的時候,在datagrid中顯示總是少一筆條
使用VB6 + .MDB 資料庫 時
增加資料表數據的時候,在datagrid中顯示總是少一筆,增加第一條數據的時候什麼也沒顯示,但明明已經增加到數據庫裡了。增加第二筆條數據的時候顯示出第一筆條,增加第三筆的時候才顯示出第一、第二筆,但數據庫裡明明有三筆記錄了。 請問原因為何 ? :em02: 要VB6程式如何改ㄋ ?:em02: 這張圖只是查詢畫面時:下方是access 開啟資料表中共有5筆, 上方是 vb6 用datagrid卻只有顯示出前4筆. 我以前沒遇到這情形, (以前 clipper語言中, 有一個指令 commit 就是專門將最後一筆 buffer強迫寫入 ), vb6 中倒沒這種指令. |
好像是指令順序的問題...
我曾經碰過, 但很久沒寫了... 我記得新增記錄之後好像要再加一行指令(移動 DataGrid的指標,移到下一筆或者做別的事) xxxx.Recordset.MoveFirst 總之,要看到你的寫法才能判斷 |
所以也一樣
要 步進式除錯 (先判斷大概之問題點 設個中斷,接著用 F8 配合觀察) 就可以找到哪裡會不照您的思維行事 |
這張圖只是查詢畫面時:圖下方是access 開啟資料表中共有5筆, 圖上方是 vb6 用datagrid卻只有顯示出前4筆. 我以前沒遇到這情形, (以前 clipper語言中, 有一個指令 commit 就是專門將最後一筆 buffer強迫寫入 , vb6 中倒沒這種指令.)
所以覺得很奇怪. ---源碼貼出如下 (很單純的查詢所寄出的 e-mail電子報 ) 如下------------------------ (grdEDM 就是DATAGRID的控制項 ) (DTPicker(0) DTPicker(1) 就是查詢日期 開始和結束) (資料表EDM 中 有一欄位 UseTime 是文字型態 放比對的日期) (下方quote 源碼內容 奇怪會變成沒縮排 有點難以閱讀 , 不知道如何貼源碼才會變成有縮排 ) 語法:
'查詢 |
你的code只有列出[查詢]的部份,
沒有提到[如何]新增... 如果你的新增, 是在別的程式新增的, 或者是跟這支程式無關, 那你應該是要[再重新查詢], 讓VB重新去讀一次資料, (目前訪間所有的程式, 都不會一直跟資料庫保持連線偵測, 也就是說當你用VB查完資料, 如果有人 之後另外去更動資料, 那你的VB畫面是不會有變化的) |
cwvdavid 大大 我們又見面了:on_79:
抱歉我樓上沒說明清楚 . 其實樓上圖中 資料是在pc中的硬碟中(並非查網路server端), 並且vb是在 "查詢"datagrid 顯示時就會少一筆 . 我納悶的這種情形是: 同一支程式.exe ,在我自己的電腦 中執行時一切正常. 但打包安裝在別台xp ,偶爾有些電腦 會發生 查詢時缺最後一筆資料(如貼圖). (我在2年前遇到過一次: 但是當時是先新增到.mdb 然後 用datagrid 顯示時也是缺最後新增的那一筆資料, 後來自己有改正確了, 現在已忘記自己當時是如何改的) 你說奇怪不奇怪:em02: -------------------- 我想另外請教cwvdavid 大大一個問題 就是有些網頁 上 會有用java語言 來即時顯示最新股市行情資料 . 這資料更新 比.html更即時也更快. 用vb6 呼叫 java語言 也能做到 達到嗎 ? 我想試寫看看試 有問題時請cwvdavid 大大 和版主不吝指點我一下 先謝謝各位了. |
1. 這個要看 負責新增資料到資料庫的程式是怎麼寫的,
ADODB在連MDB時, 有很多種方式, 像什麼[樂觀鎖定, 悲觀鎖定之類的], 還有就是新增的方式, 有透過adodb來做addnew(), 也有直接利用insert into xxtable ...來完成的方式 總之, 原因很多種, 你去有問題的電腦測試時, 試看看在查詢之前...mdb是不是已經沒有程式在連了 當你用 Access打開xxx.mdb檔時, 會多出一個 xxx.ldb (Microsoft Office Access 記錄鎖定資訊) 你用VB程式在連結mdb時, 也會多出來, 當你關閉連結時, 這個xxx.ldb就會消失(此時才是沒有任何程式在存取這個檔案) 也就是說, 如果有電腦發生了 : 新增資料之後, ldb存在... 此時你用vb去查詢, 少了一筆... 那表示問題出在這裡....... 我覺得問題應該是出在... adodb.dll這個作業系統內建的元件...版本不同... 像 gdipuls.dll (GDI+ 當初遇到 jpeg病毒時, 微軟就有更新, 不過很多軟體都沒跟著更新) 我覺得可以往這方面查查看 2. 你說的是JavaScript(網頁在用的) 要用VB6 直接去呼叫JavaScript, 是不可能的, 但你可以透過[瀏覽器元件], 也就是拉一個什麼 AcxIEBrowser什麼的...,來讀取網頁, 執行內容(這個你之前就做過了) 至於怎麼利用[瀏覽器元件]來控制網頁內的JavaScript我就不知道了 |
以前有遇過,但不知為什麼,似乎是程式執行的速度太快,快過資料寫入MDB的速度,後來我是在取資料前,稍停一下,Doevents,您試試吧
|
:on_47:
我在想有沒有一種可能.... 就是你新增完......然後沒有下到"Commit"這個指令 所以並沒有真正完成資料內容的新增..... 但是因為你一直連著資料庫 所以新增的資料也都有保存著 直到你下了"Commit"才顯示的出來 .....不確定啦......這是再Oracle才需要啦..... 不知道MDB需不需要...... P.S. 也有可能不是"Commit"這個字眼 ===>>總之就是真正存到DB裡的意思 ===>>通常Save或Insert並沒有真正的存入資料庫 ===>>要到下了類似"Commit"這樣的指令後才會存進資料庫!! 參考看看吧.....!! :on_79: |
所有時間均為台北時間。現在的時間是 12:59 PM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *