各位大大們幫我看一下,下面的代碼哪里除了問題。
我是打算在TEXT2里做了個關聯,當輸入test2文本框里公司名字時就將復合條件的公司記錄顯示到LIST3,雙擊list3,根據公司名就將該公司的聯系方式,電話,地址等顯示到界面上相應的文本框中去。
結果很奇葩的發現,居然報錯了。更奇葩的是,如果這里的代碼放到新建一個新的界面上去就正常,而這里就報錯“在對應所需的名稱或序數的集合中,未找到專案”。
可是,明明這個記錄是存在的,資料格式也都是文本格式,偏偏就報找不到專案。這是為什么啊?同樣的代碼,放到一個新建的工程或者frm中,它又是正常的。無論是語法上,資料庫結構上都沒有問題,因為同樣的代碼,同樣的資料庫,在別的工程上甚至,別的Frm中都能正常運行。唯獨在這樣的SUB中居然報錯。
這是BUG嗎?
Private Sub List3_Click()
MsgBox Trim(List3.List(List3.ListIndex))
'On Error Resume Next
tkOpenAccessDB '連接資料庫
If sts2.State = adStateOpen Then sts2.Close '在沒有任何記錄時啟用
sts2.Open "select * from 客戶資料 where 公司 like '" & Trim(List3.List(List3.ListIndex)) & "'", cnn, adOpenKeyset, adLockOptimistic, adCmdText
If Not sts2.EOF Then
sts2.MoveFirst
If Trim(sts2.Fields(7)) <> "" Then Text2.Text = Trim(sts2.Fields(7)) '公司
If Trim(sts2.Fields(1)) <> "" Then Text3.Text = Trim(sts2.Fields(1)) '聯系人
If Trim(sts2.Fields(2)) <> "" Then Combo1.Text = Trim(sts2.Fields(2)) '國家
If Trim(sts2.Fields(4)) <> "" Then Text4.Text = Trim(sts2.Fields(4)) 'E-mail
End If
sts2.Close
List3.Visible = False
End Sub


uj5u.com熱心網友回復:
tkOpenAccessDB '這是鏈接資料庫的子函式,這里是沒有問題的uj5u.com熱心網友回復:
VB6有時候是這樣的,我也沒找原因。uj5u.com熱心網友回復:
去掉 sts2.MoveFirst 試試:Text2.Text = Trim(sts2.Fields(7)) & "" '公司
Text3.Text = Trim(sts2.Fields(1)) & "' '聯系人
Combo1.Text = Trim(sts2.Fields(2)) & "' '國家
Text4.Text = Trim(sts2.Fields(4)) & "' 'E-mail
uj5u.com熱心網友回復:
Text2.Text = Trim(sts2.Fields(7)) & "" '公司Text3.Text = Trim(sts2.Fields(1)) & "" '聯系人
Combo1.Text = Trim(sts2.Fields(2)) & "" '國家
Text4.Text = Trim(sts2.Fields(4)) & "" 'E-mail
uj5u.com熱心網友回復:
原始碼只是你輸入的一部分,控制元件屬性、報表設計等存放在 .frx .dsr 等檔案中,用檔案比較工具才能發現差異。偷懶方法是用無錯新界面的檔案替換舊檔案。
uj5u.com熱心網友回復:
這個一般是資料庫中的欄位名與代碼中的欄位名不一致引起的uj5u.com熱心網友回復:
1,是debug看看你的cmdtext就是那個select xxxxx
放到資料庫里面看看有沒有資料回傳
2, 看你的sts2.recordcount是不是大于0
3, 看你的 sts2.Fields(1)是不是null
uj5u.com熱心網友回復:
這個肯定事你得紀錄集當中不不包括你指定的列所導致單位uj5u.com熱心網友回復:
把你的資料集匯出來看看就知道了……uj5u.com熱心網友回復:
If isnull(sts2.fields(2))=true thenText3.text=""
Else
Text3.text=sts2.fields(2)
End if
你出錯的原因是,文本框不能識別資料庫中欄位為null的資料造成的
uj5u.com熱心網友回復:
要顯示的欄位名沒有出現在你的代碼里,才會出現這個提示。uj5u.com熱心網友回復:
這時可以在立即視窗里輸入: ? sts2.Fields.count 回車看看是多少如果大于2, 再: ? sts2.Fields(1).name 回車看看是什么
其實說穿了,就是debug程式的手段而已. 這種事需要你自己耐心仔細尋找問題了.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/110958.html
上一篇:關于程式呼叫命令SHELL
