VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2004/01/20(Tue) 16:55
投稿者you
Eメール
URL
タイトルRe^2: DAOで実行時エラー

> > いくつかのPCで「列の値が不正です」の実行時エラーになってしまいます。
> 問題点を整理して下さい。
> エラーが発生しないPCも有るという事ですが、エラーが発生するPCと発生しない
> PCとの違いは何ですか? OS・データーの違い・その他の環境等。
> ここのサンプルを使ったとの事ですが、どこか変更(改造)されていますか?
> 元々のサンプルを使用しても同じですか?
> 「列の値が不正です」のエラーは、参照している列番号が存在しないモノを指定
> した場合に起きるかと思うのですが、その辺はどうなのですか?
> データを読込む前にその辺を操作していませんか?
> 又、単純なExcelファイルを作成してそれを読込んだ場合どうなりますか?
> (すべてのセルに同じデータを入れた5列5行位のファイル)
>
> 上記の部分について調べて見て下さい。
> コードを変更されたのなら、そのコードも投稿して見て下さい。

ご回答有難うございます。

試してみた環境は
@2000・VBがインストールされている…○
A2000・VBがインストールされていない…○
BNT・VBがインストールされている…○
CNT・VBがインストールされていない…×
の4つです。
データの違いはありません。
@とCのPCのレジストリ「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel」
の内容を比較してみましたが、全く一緒でした。

コードは以下の通りです。
    
    Dim daoDB As DAO.Database
    Dim daoRs As DAO.Recordset
    Dim strXLSName As String
    Dim strSQL As String
    Dim i As Long
    
    strXLSName = "C:\マスタ.xls"
    Set daoDB = DBEngine.Workspaces(0).OpenDatabase(strXLSName, _
        False, False, "EXCEL 8.0; HDR=YES;IMEX=1;")

    strSQL = "SELECT a.●名," & _
                    "a.○1," & _
                    "b.■," & _
                    "c.▲区分名称," & _
                    "d.▼区分名称," & _
                    "a.4桁●コード," & _
                    "a.○2," & _
                    "a.▲区分," & _
                    "a.▼区分" & _
            " FROM ((([●マスタ$] a " & _
            " LEFT JOIN [■マスタ$] b on a.4桁●コード = b.4桁●コード) " & _
            " LEFT JOIN [▲区分マスタ$] c on a.▲区分 = c.▲区分)  " & _
            " LEFT JOIN [▼区分マスタ$] d on a.▼区分 = d.▼区分) " & _
            " RIGHT JOIN [略語マスタ$] e on a.4桁●コード = e.4桁●コード" & _
            " WHERE e.●カナ LIKE '*" & TextKana & "*' "
    Set daoRs = daoDB.OpenRecordset(strSQL, dbOpenDynaset)

    If daoRs.EOF Then
        MsgBox "該当データがありません。"
    Else

        'MSFlexGridと連結
        Set Data1.Recordset = daoRs
    
        MSFlexGrid1.Visible = True
        With MSFlexGrid1
            For i = 1 To .Rows - 1
                .TextMatrix(i, 0) = i
            Next i
        End With
        
        MSFlexGrid1.ColWidth(0) = 0
        MSFlexGrid1.ColWidth(1) = 2400
        MSFlexGrid1.ColWidth(2) = 1400
        MSFlexGrid1.ColWidth(3) = 1400
        MSFlexGrid1.ColWidth(4) = 1000
        MSFlexGrid1.ColWidth(5) = 700
        MSFlexGrid1.ColWidth(6) = 0
        MSFlexGrid1.ColWidth(7) = 0
        MSFlexGrid1.ColWidth(8) = 0
        MSFlexGrid1.ColWidth(9) = 0
        MSFlexGrid1.Visible = True
        
    End If

    Data1.Refresh
    daoRs.Close
    Set daoRs = Nothing
    daoDB.Close
    Set daoDB = Nothing
    


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -