[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/05/27(Fri) 08:12
投稿者名:kara
Eメール:
URL :
タイトル:
SQLエラー
おはようございます
お世話になっておりますkaraです

SQL文をくんだのですが、下記のエラーがでます
色々調べてのですが今一つ分かりません。
ご指示ください。
よろしくお願いいたします。

ACCESS 2002 SP3
VB6.0 SP6



エラー
引数が間違った型、許容範囲外、または競合しています。


Private Sub Command1_Click()
Dim strSQL As String
    
    ' データベース接続を確立する
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=c:\db1.mdb"
    
    ' SQLクエリーの設定
        
  strSQL = "SELECT テーブル1.住所, テーブル1.名前, テーブル1.役職 From テーブル1 WHERE
テー
ブル1.住所='東京'"

       ' レコードセットを取得する
    Set rs = cn.Execute(strSQL)
    
    ' レポートのデータソースを指定(レコードセットから情報を取得する)
    Set DataReport1.DataSource = rs
    
    ' レポートを表示(プレビュー)する
    DataReport1.Show

投稿時間:2005/05/27(Fri) 09:14
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: SQLエラー
> Set rs = cn.Execute(strSQL)
この方式だと、前方移動専用カーソル(adOpenForwardOnly)が生成されてしまいます。
このタイプは、DataSourceの割り当てには向かないでしょう。

ConnectionオブジェクトのExecuteメソッドの代わりに、Recordsetオブジェクトの
Openメソッドを使い、適切な CursorType を指定して開くようにしてみてください。

投稿時間:2005/05/30(Mon) 07:15
投稿者名:kara
Eメール:
URL :
タイトル:
Re^2: SQLエラー
> > Set rs = cn.Execute(strSQL)
> この方式だと、前方移動専用カーソル(adOpenForwardOnly)が生成されてしまいます。
> このタイプは、DataSourceの割り当てには向かないでしょう。
>
> ConnectionオブジェクトのExecuteメソッドの代わりに、Recordsetオブジェクトの
> Openメソッドを使い、適切な CursorType を指定して開くようにしてみてください。

おはようございます。
ありがとうございます。
Recordsetオブジェクトの
Openメソッドを使い、適切な CursorType をやって
みております、うまくいってません??
状況がかわり次第、また書き込みいたします。
よろしくお願いいたします。

投稿時間:2005/05/31(Tue) 07:21
投稿者名:kara
Eメール:
URL :
タイトル:
Re^3: SQLエラー
おはようございます
お世話になっております、karaです

やってみているのですが、勉強不足で分かりません。。。。
ご指示いただければありがたいです。

Private Sub Command1_Click()
Dim strSQL As String
' データベース接続を確立する
Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=c:\db1.mdb"

' SQLクエリーの設定

    ' レコードセットを取得
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open "テーブル1", cn, adOpenStatic

strSQL = "SELECT テーブル1.住所, テーブル1.名前, テーブル1.役職 From テーブル1 WHERE テ
ーブル
1.住所='東京'"

' レコードセットを取得する
Set rs = cn.Recordset(strSQL)

' レポートのデータソースを指定(レコードセットから情報を取得する)
Set DataReport1.DataSource = rs

' レポートを表示(プレビュー)する
DataReport1.Show

End Sub

投稿時間:2005/05/31(Tue) 10:08
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^4: SQLエラー
付属のサンプル「\DataRept\PRJNWIND.VBP」のように、まずは
DataEnvironmentを利用して開発されてみては如何でしょうか。
自分でConnection/Recordsetを管理する手法は、その後でも遅くないかも知れません。
(それとも、DataEnvironmentでは問題なく動作できているのでしょうか?)


>     rs.Open "テーブル1", cn, adOpenStatic
この時点で、"SELECT * FROM テーブル1" 相当のレコードセットを作っていますよね。

> ' レコードセットを取得する
> Set rs = cn.Recordset(strSQL)
この行は、何を意図しているのでしょうか?

ConnectionオブジェクトにはRecordsetメソッドはありませんし、もしあったとしても、
ここで再生成してしまっては、先に開いた "テーブル1" が無意味になってしまいますよね。

投稿時間:2005/05/31(Tue) 11:03
投稿者名:kara
Eメール:
URL :
タイトル:
Re^5: SQLエラー
ありがとうございます

DataEnvironmentを利用して問題なく
印刷できます。

何故このような質問をしたといいますと
任意にmdbを選択して検索をかけて
その取り出しましたデータをDataReportつかって印刷したくて。。。。。

いましばらく色々やってみます。勉強不足です

投稿時間:2005/05/31(Tue) 11:32
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^6: SQLエラー
> DataEnvironmentを利用して問題なく
> 印刷できます。
となると、コードや設定には大きな問題が無いように思えます。

もしかしたら、接続情報に問題があるか、あるいはADOのバージョンの不一致かも知れません。
VBのService Packと、MDACのバージョンは適切に更新されていますか?


とりあえず、DataEnvironment無しで表示するサンプルを、幾つか掲載しておきます。
hhttp://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200306/03060070.txt
上記では、グループ化が必要なので DataShape を利用していますが、
グループ化が不要なら、Microsoft.Jet.OLEDB.4.0だけでも開けるはずです。


> 任意にmdbを選択して検索をかけて
一応、DataEnvironmentの接続先は、実行時に変更できますよ。
# まぁ、自分で管理した方が楽かも知れませんけど。(^^;

If DataEnvironment1.Connection1.State <> adStateClosed Then
    DataEnvironment1.Connection1.Close
End If
DataEnvironment1.Connection1.Properties("Data Source").Value = Path
DataEnvironment1.Connection1.Open

> その取り出しましたデータをDataReportつかって印刷したくて。。。。。
検索条件の指定なども、DataEnvironmentで行えます。

たとえば、DataEnvironment1内で、
 SELECT * FROM Customers WHERE City=HOGE
のようなコマンドを指定して場合、[パラメータ]タブで適切な型を与えておけば、実行時には、
    DataEnvironment1.Command1 "London"
    DataReport1.Show
のようにして、ロンドンの顧客のみを印刷する事もできます。

投稿時間:2005/05/31(Tue) 13:25
投稿者名:kara
Eメール:
URL :
タイトル:
解決いたしました
魔界の仮面弁士 さん
kazuやんさん
色々ありがとうございました。

DataEnvironment
CommandのラベルをDataReportに貼ったまま
実行していました。TEXTにしましたらうまく行きました。

また、魔界の仮面弁士 さんのご意見や参考を基に色々やってみます。
今後ともご指導のほどよろしくお願いいたします。

投稿時間:2005/05/31(Tue) 11:05
投稿者名:kazuやん
URL :
タイトル:
Re^4: SQLエラー
単純に以下のサイトの用に組めば良いだけでは?

hhttp://homepage2.nifty.com/inform/vbdb/reportsample.htm

> おはようございます
> お世話になっております、karaです
>
> やってみているのですが、勉強不足で分かりません。。。。
> ご指示いただければありがたいです。
>
> Private Sub Command1_Click()
> Dim strSQL As String
> ' データベース接続を確立する
> Set cn = CreateObject("ADODB.Connection")
> cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
> "Data Source=c:\db1.mdb"
>
> ' SQLクエリーの設定
>
>     ' レコードセットを取得
>     Set rs = New ADODB.Recordset
>     rs.CursorLocation = adUseClient
>     rs.Open "テーブル1", cn, adOpenStatic
>
> strSQL = "SELECT テーブル1.住所, テーブル1.名前, テーブル1.役職 From テーブル1 WHER
E テ
> ーブル
> 1.住所='東京'"
>
> ' レコードセットを取得する
> Set rs = cn.Recordset(strSQL)
>
> ' レポートのデータソースを指定(レコードセットから情報を取得する)
> Set DataReport1.DataSource = rs
>
> ' レポートを表示(プレビュー)する
> DataReport1.Show
>
> End Sub