[リストへもどる]
一括表示

投稿時間:2004/04/21(Wed) 14:17
投稿者名:やまと麻耶
Eメール:
URL :
タイトル:
VB6.0でAccess2000のデータをデータグリッドに表示
初めまして。質問があります。
手持ちの本に従い、データグリッドにデータを表示させるプログラムを作成しました。
使用ソフトはVB6.0とAccess2000のものです。

『DEデザイナで作成したコネクションオブジェクトが使用するデータベースを、
ADOのコネクションオブジェクトを作成するときに指定』させるようにしてから、
エラーメッセージで「実行時エラー 6147 列が見つかりません。 伝票番号」と
表示されるようになってしまいました。
なお、SQLは正しいことを確認しました。
また、これは本に従って書いたプログラムですが、VBのバージョンとAccessのバージョンは異なっています。

初心者なもので説明に不備があるかもしれません。
お手数おかけしますが、どうぞご教授のほど、宜しくお願いします。

'宣言−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Option Explicit

Private cn As New ADODB.Connection

'FormLoad−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Private Sub Form_Load()
    
'    データベースを指定する関数
    Dim dbname As String
    dbname = GetDataSource()
    
    '***接続情報文字列の指定***
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                        & "Data Source=" & dbname

   '***コネクションをオープン***
    cn.Open

  '***データグリッドに表示するためのレコードセットを取得する関数***
    Call RefreshData      


End Sub

'データグリッドにデータを呼び出す関数−−−−−−−−−−−−−−−
Private Sub RefreshData()
    Dim rs As New ADODB.Recordset
    Dim mySQL As String

    'SQLステートメント

    mySQL = "SELECT 伝票サブ.伝票番号, 伝票サブ.商品ID, 伝票サブ.数量, 商品一覧.商品名," _
           & "商品一覧.単価, 商品一覧.単価 * 伝票サブ.数量 AS 金額 " _
           & "FROM 伝票サブ INNER JOIN " _
           & "商品一覧 ON 伝票サブ.商品ID = 商品一覧.商品ID " _
           & "Where 伝票サブ.伝票番号 = " & txt伝票番号.Text

        rs.Open mySQL, cn, adOpenStatic, adLockOptimistic

        Set dbgSub.DataSource = rs

    'フォーマット
    dbgSub.Columns("伝票番号").Visible = False
    dbgSub.Columns("商品ID").Width = 60 * 15
    dbgSub.Columns("商品名").Width = 150 * 15
    dbgSub.Columns("単価").Width = 60 * 15
    dbgSub.Columns("数量").Width = 60 * 15
    dbgSub.Columns("金額").Width = 60 * 15

End Sub

'DEデザイナで作成したコネクションオブジェクトの接続情報からデータソースを取得−−−−
Private Function GetDataSource() As String
    
    Dim startPos As Long    '開始位置
    Dim endPos As Long      '終了位置
    Dim skip As Long        '読み飛ばす文字数

    'データソースの取得
    startPos = InStr(1, deMain.cnSales.ConnectionString, _
                "Data Source=", vbTextCompare)

    endPos = InStr(startPos, deMain.cnSales.ConnectionString, _
                ";", vbTextCompare)

    skip = Len("Data Source=") '"Data Source="を読み飛ばす

    GetDataSource = Mid(deMain.cnSales.ConnectionString, _
                    startPos + skip, endPos - (startPos + skip))
End Function

投稿時間:2004/04/21(Wed) 21:47
投稿者名:除菌ちゃん
Eメール:
URL :
タイトル:
Re: VB6.0でAccess2000のデータをデータグリッドに表示
パット見、気づいた事を書き込みます。

(1)
>dbname = GetDataSource()
      ↓
dbname=App.Path & "\ファイル名.mdb"

*vbpとmdbが同じディレクトリの場合。

(2)
cn.CursorLocation = adUseClient

cn.Openの前に足して見て下さい。

(3)
rs.Open mySQL, cn, adOpenStatic, adLockOptimistic
       ↓
Set rs=New ADODB.Recordset
rs.Open mySQL, cn, adOpenStatic, adLockOptimistic
と、してみてください。

投稿時間:2004/04/22(Thu) 10:14
投稿者名:やまと麻耶
Eメール:
URL :
タイトル:
Re^2: VB6.0でAccess2000のデータをデータグリッドに表示
どうもありがとうございました!動作致しました。
(1)と(2)を入れると出来るようで、(3)はなくても大丈夫なようでした。

後からわかったのですが、
GetDataSource()で、接続情報文字列から「;」の位置を調べることで
データ名を抜き出すはずが、
不用意にファイル名にも「;」を入れていたため、必要なファイルが取得できなくなっていました。

同じところで一週間以上も悩んでいたのが嘘のようです。
やはりわからないことは、分かる方に尋ねるのが一番、と思いました。
(今度から時間の無駄使いを防ぐために、
 PCの淵に「馬鹿の考え、休むに似たり」とでも書いておこうかしら。(^^;))

こんな若輩者な私ですが、また、どうぞ宜しくお願いします。

投稿時間:2004/04/22(Thu) 10:50
投稿者名:黒影
Eメール:
URL :
タイトル:
Re^3: もう見ないかな?
> どうもありがとうございました!動作致しました。
> (1)と(2)を入れると出来るようで、(3)はなくても大丈夫なようでした。

解決されて良かったと思います。

> 同じところで一週間以上も悩んでいたのが嘘のようです。
> やはりわからないことは、分かる方に尋ねるのが一番、と思いました。

納期等にもよりますけど、
今回のように色々試されてから質問された方が良いと思います。
自分の為にもなりますし...と言っても、一週間以上は時間かけ過ぎ?
↑↑↑↑
この辺は、あくまでも僕の考え方なので...
あまり気にしないで下さい(^^;)
押し付ける気もありません。

> こんな若輩者な私ですが、また、どうぞ宜しくお願いします。

今後はマルチポストしないようにして下さいね(^^)
下手すると、回答を得られない事もありますよ。

Accessはよく知らないのもありますが、
注意だけして、回答をつけない僕も
マナー違反をしていると...反省<(__)>

ではでは、今後も頑張ってください(^o^)

投稿時間:2004/05/06(Thu) 17:34
投稿者名:やまと麻耶
Eメール:
URL :
タイトル:
Re^4: もう見ないかな?
すみません、以前書き込みをしてからしばらくの間、このページのチェックをしていませんでした。
黒影さん、マナーのことなどご指摘ありがとうございました。
どうも申し訳ありませんでした。
焦っていたからと言って、自分の都合ばかりで配慮に欠けていたことを、恥ずかしく思います。
今後、気をつけます。
それとルールを乱したことの謝罪が遅れたこと、重ねてお詫びします。

今後のためにお聞きしておきたいのですが、
もしもある掲示板で質問して、一定期間(一週間なり十日なり)が経過し、
それでも回答が得られなかったり、自力で解けなかった場合は
他の掲示板にあたってもよろしいのでしょうか?
良かったら教えて下さい。いろいろ知らなくて、すみません。
宜しくお願いします。

投稿時間:2004/05/06(Thu) 22:39
投稿者名:Say
Eメール:
URL :
タイトル:
Re^5: もう見ないかな?
パワーユーザはたいてい複数のサイトを徘徊してますから、
不活発なサイトとか板違いとかでない限り、
河岸を変えてもあまり意味ないでしょう。

回答が付かないのには大抵なんらかの理由がありますから、
(質問がわかりにくい、とか、マナーが悪い、とか
本当に誰にも答えようがないとか)
文章を見直して同一サイトで再質問するほうが
建設的ではないかと。

投稿時間:2004/05/07(Fri) 08:42
投稿者名:るしぇ
Eメール:
URL :
タイトル:
Re^6: もう見ないかな?
> パワーユーザはたいてい複数のサイトを徘徊してますから、
> 不活発なサイトとか板違いとかでない限り、
> 河岸を変えてもあまり意味ないでしょう。
>
> 回答が付かないのには大抵なんらかの理由がありますから、
> (質問がわかりにくい、とか、マナーが悪い、とか
> 本当に誰にも答えようがないとか)
> 文章を見直して同一サイトで再質問するほうが
> 建設的ではないかと。

そうなんですよね。質問に答えてくださる方って色んなトコで見ますw。
ボク自身はマルチポストに関しては特に気にしてなかったんですが、
回答する側になってみて『邪魔だなぁ(T△T)』と思うようになりました。
だって、回答する時って一応ネットで調べたりしてて…マルチポスト
してたら質問者の書き込みがいっぱい引っかかる引っかかる(同じキーワード
を含んでるから当たり前w)やって欲しくないです、うん(TT)。

投稿時間:2004/05/07(Fri) 10:23
投稿者名:黒影
Eメール:
URL :
タイトル:
Re^7: もう見ないかな?

Sayさんのおっしゃるように、
回答をくださるほとんどの方が、質問者と同一のサイトを見ています。
親切な回答者だと、両方に回答つけてくれたりしますが、
(それなのに、結果報告がなかったりする...)
回答者によっては、(わざと?)回答されない方もいます。

僕自身は、マルチポストは絶対禁止というわけではなく、
ある程度(平日なら2〜3日、休日を挟む場合は+数日)
回答が得られない場合は、その旨を含めて投稿すれば、
構わないと思っています。


やまと麻耶さん>>
僕は、マルチポストに関して怒っているわけではありません。
マルチポストすると、回答を得られない事が多い事を
伝えたかっただけです。
言葉足らずだったので、気を悪くされていたら
ゴメンなさい<(__)>

下記リンク先を見てみてください。
100%同意するわけではありませんが、
結構面白い事が色々書かれています(^^)
http://www.geocities.co.jp/SiliconValley/5634/t82DC_0005.html

投稿時間:2004/05/07(Fri) 18:02
投稿者名:やまと麻耶
Eメール:
URL :
タイトル:
Re^8: もう見ないかな?
>言葉足らずだったので、気を悪くされていたら
>ゴメンなさい<(__)>

いえ、とんでもないです。^^;)
むしろマナー違反など、良くないことをしてしまっていたら、
言って頂ける方が有難いですし、優しいと思います。
書き込みの手間をかけていただいたということなのですから。
Sayさんも、ご意見ありがとうございます。
今後に役立てますね。

リンク先ページ、拝見しました。
なるほど、いっぱいいっぱいになった方々のなさったことは
反面教師にした方がよさそうですね。
最近は壁紙に、素敵なオードリーヘップバーンを飾ったりして
マイペースに進めております。
落ち着きを持ちながら、って大事だなあと思いました♪

投稿時間:2004/05/08(Sat) 10:16
投稿者名:やまと麻耶
Eメール:
URL :
タイトル:
何度もごめんなさい
るしぇさんも、コメントありがとうございました。
一つ前の書き込みで入れ忘れてしまって、ごめんなさい。
これからもいろいろ宜しくお願いします。>皆様