asked in 電腦與網際網路程式設計 · 1 decade ago

VB6 count函數計算產生的暫時欄位Expr1000

請問使用count()函數計算所產生的暫時欄位Expr1000

有沒有辦法還原到原本Adodc的DataGrid

例如

Private Sub Command1_Click()

Adodc1.CommandType = adCmdText

Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\data123.MDB;Persist Security Info=False"

Adodc1.RecordSource = "select count(*) from data where 編號 ='" & Text1.Text & "'"

Adodc1.Refresh

MsgBox "編號" & Text1.Text & "號的資料有" & Adodc1.Recordset.Fields(0) & "筆"

End Sub

執行後會產生暫時欄位Expr1000

請問執行之後要如何還原到原本的欄位呢

謝謝

Update:

謝謝你的解說,不過還有一點問題,因為字數限制我把它寫在意見裡

Update 2:

我宣告I為整數

Dim I As Integer

Adodc3.RecordSource = "select * from cdata where 應用知識編號 =" & Text8.Text & ""

I = Adodc3.Recordset.RecordCount

請問之後程式碼要如何修改呢,msgbox要如何改呢

謝謝,小弟是新手對recordset這部分的應用還不是很懂,還請見諒

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    這種情況你要針對Query語法做修正(利用欄位指定別名)

    Adodc1.RecordSource = "select count(*) from data where 編號 ='" & Text1.Text & "'"

    請改成 (假設你的欄位名稱叫MyName)

    Adodc1.RecordSource = "select count(*) as MyName from data where 編號 ='" & Text1.Text & "'"

    但是要注意,搜尋欄位不能與別名重複(以下為錯誤範例,會造成別名循環錯誤)

    Adodc1.RecordSource = "select count(MyName) as MyName from data where 編號 ='" & Text1.Text & "'"

    2007-12-07 14:16:51 補充:

    如果你只是要顯示筆數 請用 Adodc1.Recordset.RecordCount ,它會幫你

    算出總筆數

    而RecordSource的Query就改成

    Adodc1.RecordSource = "select * from data where 編號 ='" & Text1.Text & "'"

    依你的需求,請盡量不要把總合函數和你欄位的查詢混在一起,否則你

    必須學會怎麼用Group by

    2007-12-07 17:56:01 補充:

    其實不用在宣告I

    直接在Msgbox後面接變數,如下

    Msgbox "共" & Adodc3.Recordset.RecordCount & "筆資料!"

    Source(s): 別名基本運用
  • 1 decade ago

    謝謝大大的提議,我用過但是只能改善欄位名稱...

    抱歉可能我題意不清....

    假設我的資料表data的欄位有編號,姓名,學號

    我用count統計編號為1的資料共有5筆

    按下command1鍵之後會再DataGrid形成一個欄位Expr1000顯示5次

    可是我想回到我之前的資料表data所顯示的編號,姓名,學號這三欄位

    請問須要如何改呢

    例如當msgbox顯示筆數有5筆之後,我按下確定,有辦法DataGrid跳回之前的資料表data嗎,或是新增甚麼鍵之類的,不然就是有辦法把count數所形成的資料只顯示在msgbox裡,不用顯示在DataGrid裡

    不好意思,一下子問一連串問題,如果題意不清請見諒

    謝謝,有勞

Still have questions? Get your answers by asking now.