VB6からADOを使用しACSESS2000MDBにデータを登録すると

INSERT 文でエラーになってしまいます。

エラーコード:-2147217833です。

何が原因か分かる方教えて下さい。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

gould09さんの回答のようにテーブルに取っている項目に対してINSERTしようとしているデータのレングスが長すぎるのではないかと思います。

テーブルの項目のレングスと挿入し様としているデータのレングスをチェックしてみてください。
    • good
    • 0

エラーコード-2147217833をHEXに変換して検索して見たら下記のエラーがヒットしました。


今回の問題を解く参考にはなりませんか

--------------------------------------------------------------------
アップロード中のトラブルの原因がわかりました。。何と、単にファイルの名称が長過ぎただけ・・。
Photohighwayを使われていて、アップロード中に
「Microsoft OLE DB Provider for SQL Server エラー '80040e57'
STRING または BINARY データは切り詰められました。
/MA_UploadRcv.asp, 行 91」
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qこのホ-ムペ-ジでの質問一覧画面がエラーで出ない

このホ-ムペ-ジですが
マイページ → 関心カテゴリーの質問一覧
を押してもエラ画面ーになり表示出てきません
自分の質問解答履歴は出ます
なぜエラーに ???
宜しくお願い致します

Aベストアンサー

エラーが続出していますね。
更新ボタンを押すと表示されることが多いです。

QVB6でmdbファイルのレコードを検索かけた場合に時折エラーがでます。

VB6.0を使って資料のデーターベースを作っているのですが、質問させてください。
アクセスのmdbファイルからデータを読みとり、Command1ボタンを押した際にテキストボックスに入力した任意の文字列が含む資料名のレコードを抽出する機能を持たせています。
また、OPTIONボタンでA~Jまでの資料区分ごとに絞り込みを行う機能(option7を押した場合は全資料区分から検索)も持たせているのですが、テキストボックスに文字列を入力後、OPTIONボタンで資料区分Aを検索⇒Command1ボタン⇒OPTIONボタンで資料区分B⇒Command1ボタン等のように繰り返しての検索をすると時折フリーズして動かなくなります。特に該当レコードが0の後に発生する場合が多いようです
原因が分からず困っています。よろしくお願いします。


Private Sub Command1_Click()
Dim kubun As String '文字列型 資料の区分
Dim mojiretsu_k As String '文字列型 検索用文字列
Dim a As Integer

If Option7 = True Then'全文書区分から検索
ElseIf Option8 = True Then
kubun = "A"
ElseIf Option9 = True Then
kubun = "B"
ElseIf Option10 = True Then
kubun = "C"
ElseIf Option11 = True Then
kubun = "D"
ElseIf Option12 = True Then
kubun = "E"
ElseIf Option13 = True Then
kubun = "F"
ElseIf Option14 = True Then
kubun = "G"
ElseIf Option15 = True Then
kubun = "H"
ElseIf Option16 = True Then
kubun = "I"
ElseIf Option17 = True Then
kubun = "J"
End If

' 接続文字列を設定
Adodc1.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=資料.mdb;" & _
"Mode=Read"
' レコードソースにSQL文を指定
mojiretsu_k = Text1.Text

If Option18.Value = True Then '現行文書のみ検索
If Option7.Value = True Then'全文書区分から検索
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 廃止フラグ = False order by ID"
Else'指定された資料区分で検索
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ and 廃止フラグ = False order by ID"
End If
ElseIf Option19.Value = True Then '廃止文書のみ検索
If Option7.Value = True Then
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 廃止フラグ = true order by ID"
Else
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ and 廃止フラグ = true order by ID"
End If
ElseIf Option20.Value = True Then '現行+廃止文書を検索
If Option7.Value = True Then
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' order by ID"
Else
Adodc1.RecordSource = "Select 資料区分,資料名称,ファイルパス,廃止フラグ From T_SHIRYO WHERE 資料名称 like'%" & mojiretsu_k & "%' and 資料区分 = """ & kubun & """ order by ID"
End If
End If

' データを再取得
Adodc1.Refresh


With MSHFlexGrid1
.FocusRect = flexFocusNone
.HighLight = flexHighlightAlways
End With
End Sub

VB6.0を使って資料のデーターベースを作っているのですが、質問させてください。
アクセスのmdbファイルからデータを読みとり、Command1ボタンを押した際にテキストボックスに入力した任意の文字列が含む資料名のレコードを抽出する機能を持たせています。
また、OPTIONボタンでA~Jまでの資料区分ごとに絞り込みを行う機能(option7を押した場合は全資料区分から検索)も持たせているのですが、テキストボックスに文字列を入力後、OPTIONボタンで資料区分Aを検索⇒Command1ボタン⇒OPTIONボタンで資料区分B⇒C...続きを読む

Aベストアンサー

ADODC1が何なのかよくわからないのでサンプルを書いておきます。

■ADOの接続

Dim oConn As ADODB.Connection
Dim oRec As ADODB.Recordset

Set oConn = New ADODB.Connection
'________mdb________にmdbまでのフルパスを書く
oConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=________mdb________")
'________SQL________に作成したSQL文
Set oRec = oConn.Execute("________SQL________")
While Not oRec.EOF
'________COL________にmdbのカラム名を書く
Debug.Print oRec.Fields("________COL________").Value
oRec.MoveNext
Wend

oRec.Close
Set oRec = Nothing
oConn.Close
Set oConn = Nothing


エラーになる原因は0件の場合に
With MSHFlexGrid1
.FocusRect = flexFocusNone
.HighLight = flexHighlightAlways
End With
で何をどこに入れるか判断が付かないのかなって思われます。

0件の時に回避できるようにしてはどうでしょうか?

ADODC1が何なのかよくわからないのでサンプルを書いておきます。

■ADOの接続

Dim oConn As ADODB.Connection
Dim oRec As ADODB.Recordset

Set oConn = New ADODB.Connection
'________mdb________にmdbまでのフルパスを書く
oConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=________mdb________")
'________SQL________に作成したSQL文
Set oRec = oConn.Execute("________SQL________")
While Not oRec.EOF
'________COL________にmdbのカラム名を書く
Debug.Print oRec.Fi...続きを読む

Qホームページビルダー11で通信エラー(エラーコード:553)がサイト転送時に出ます。

 こんにちは。ホームページビルダー11でサイト転送すると通信エラ
ー(エラーコード:553)が出て、フレーム表示のページも表示され
ていない状態になってしまいます。どうしたらよいですか?

Aベストアンサー

こちらがご参考になるかと

V11 で転送時に「転送エラー」ダイアログが表示されます
http://www-06.ibm.com/jp/domino01/swhc/esupport.nsf/key/49256A6A0001F136492572350006E350?opendocument

FTPのエラーメッセージの553ですと、「ファイル名の文法エラー、ファイル名が間違っているため実行できない」という意味ですので
この場合、大抵はファイル名に半角英数以外を使用しているのが原因トモ考えられますので、ご確認を。
ファイル名に使用できるのは半角英数と_-のみです。

ただ、どうもV11の不具合でもあるようですので、ファイル名に問題がない時は、サイト転送ではなくページ転送(FTP)や、フリーソフトのFFFTPなどを使って転送してみた後、ネット上で表示されるかどうか確認するのをおすすめします。

また、後日V11の修正ファイルがIBMで配布されると思いますので、たまに下記サイトをアクセスし、修正ファイルが公開されたらインストールされておかれてください。
http://www-06.ibm.com/jp/software/internet/hpb/

参考URL:http://www-06.ibm.com/jp/domino01/swhc/esupport.nsf/key/49256A6A0001F136492572350006E350?opendocument

こちらがご参考になるかと

V11 で転送時に「転送エラー」ダイアログが表示されます
http://www-06.ibm.com/jp/domino01/swhc/esupport.nsf/key/49256A6A0001F136492572350006E350?opendocument

FTPのエラーメッセージの553ですと、「ファイル名の文法エラー、ファイル名が間違っているため実行できない」という意味ですので
この場合、大抵はファイル名に半角英数以外を使用しているのが原因トモ考えられますので、ご確認を。
ファイル名に使用できるのは半角英数と_-のみです。

ただ、どうもV11の不...続きを読む

Qvb2005でmdbを読み込みmdbに書き出したい

よろしくお願いします。windowsxp,access2003,vb2005express エディションを使用して、現在、勉強中です。
早速質問ですが、ADO・NETを使ってA_MDBをvb2005に読み込んで,その内容をB_MDBに書き込みたいのですがその方法が分かりません

例えば、A_MDBのA_TABLEには単価と数量が有ります。仮に10レコードがあるとします、このA_TABLEを読み込んで、単価と数量を
掛けて金額を計算し、B_MDBのB_TABLEに単価、数量、金額の各項目を書き込むという感じです。A,B両MDBは作成済です。あまり上手く
表現できませんがよろしくお願いいたします。

Aベストアンサー

http://park5.wakwak.com/~weblab/index.html

↑このへん参考にどうぞ。

QWindows1032bitアップデート中にエラーが出ました。second-boot フェーズでエラ

Windows1032bitアップデート中にエラーが出ました。second-boot フェーズでエラーが出ました!全く意味がわかりません?

Aベストアンサー

windows10、windows10anniversary Updateに失敗をする場合は、
タスクトレイを開いてタブのスタートアップを開いて、すべてのアプリを無効にします。
次にもサービスを開いて、Microsoftの製品をすべて無効にします。

windows10 Creators Updateに失敗をする原因
http://freesoft.tvbok.com/win10/problems/trouble_shoot_list_creators_update.html

私のプロフィールにwindowsに関するURLを載せているので、必要な時にURLを開いて操作方法を確認してください。

QVB2005でINSERT文が。。。

こんにちわ、VB2005初心者でいつもお世話になってます。
単純なINSERT文「コンマ、')'、または有効な式の継続文字が必要です」のエラーです。記述のどこが間違いなのかご指摘いただけますでしょうか。
DataGridViewにAテーブル(MDB、5フィールド)データを表示して新規入力されたデータ(行)をAテーブルに追加しようとしています。これはデータソース追加でのクエリーではなくPG内に記述しています。
「values("& dTbl.Rows(i)(0)","」の「","」がエラーとなっています。

If dTbl.Rows(i).RowState = DataRowState.Added Then
Try
dCom = New OleDb.OleDbCommand( _
"INSERT INTO Aテーブル values("& dTbl.Rows(i)(0)","& dTbl.Rows(i)(1)"," _
& dTbl.Rows(i)(2)"," & dTbl.Row(i)(3)"," & dTbl"." & Row(i)(4)", cn)
dCom.ExecuteNonQuery()
cn.Close()
MsgBox(dCom)
MessageBox.Show("追加しました。", "通知")
Catch ex As Exception
cn.Close()
MessageBox.Show(ex.Message)
End Try
End If
よろしくお願いいたします。

こんにちわ、VB2005初心者でいつもお世話になってます。
単純なINSERT文「コンマ、')'、または有効な式の継続文字が必要です」のエラーです。記述のどこが間違いなのかご指摘いただけますでしょうか。
DataGridViewにAテーブル(MDB、5フィールド)データを表示して新規入力されたデータ(行)をAテーブルに追加しようとしています。これはデータソース追加でのクエリーではなくPG内に記述しています。
「values("& dTbl.Rows(i)(0)","」の「","」がエラーとなっています。

If dTbl.Rows(i).RowState = DataRow...続きを読む

Aベストアンサー

&が抜けています。

QC#でテキストボックスとスクロールバーをバインディングしていて、更にエラープロバイダーをセットしエラ

C#でテキストボックスとスクロールバーをバインディングしていて、更にエラープロバイダーをセットしエラーメッセージが出るようになっていてe.cancel=trueを書いています。

やりたいことは、テキストボックス空欄でタブを押下したときにエラーメッセージがでてe.cancel=trueが反応し動作できなくなることです。

現在、テキストボックス空欄でタブを押したときにエラーメッセージは出ますがe.cancel=trueが反応せず、テキストボックス内が空欄→0になり進んでしまいます。
ちなみにバインディングしているスクロールバーの最小値は0に設定しています。

是非ともご教授お願いします(._.)

Aベストアンサー

通常、TextBox内でTabを押下した時、次のコントロールへフォーカスが遷移しますが、遷移しない場合もあります。
(次のコントロールとして認識されるものがない場合もあり得る)

そのため、Tabの制御をValidatingイベントで実装することは非現実的です。

Tab制御を問題視しているのか、Validatingイベントの制御を問題視しているのかがよくわかりません。

以下のようにした場合、フォーカス遷移が行われる際に必ずキャンセルされます。
それはTabキー押下に限った話ではありません。
private void textBox1_Validating(object sender, CancelEventArgs e)
{
errorProvider1.SetError(textBox1, "hoge");
e.Cancel = true;
}

Tabキーの話をしているのならば、PreviewKeyDownイベントで実装し、Tabを入力キーとしてしまって、フォーカス遷移を行わないようにできます。
が、TabがWindowsの仕様と異なることになります。
当たり前ですが、色々制御した結果、ヨシとした場合、それによってフォーカスが遷移するならば、Validatingイベントも走行しますので。
private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
errorProvider1.SetError(textBox1, "hoge");
e.IsInputKey = true;
}
}

通常、TextBox内でTabを押下した時、次のコントロールへフォーカスが遷移しますが、遷移しない場合もあります。
(次のコントロールとして認識されるものがない場合もあり得る)

そのため、Tabの制御をValidatingイベントで実装することは非現実的です。

Tab制御を問題視しているのか、Validatingイベントの制御を問題視しているのかがよくわかりません。

以下のようにした場合、フォーカス遷移が行われる際に必ずキャンセルされます。
それはTabキー押下に限った話ではありません。
private void textBo...続きを読む

QVBからmdbファイル(Access2000)の特定のフォームを開きたい?

VisualBasicのフォームに配置したコマンドボタンをクリックすることで、特定のmdbファイルをAccess2000で開き、開くと同時に特定のフォームが表示されるようにしたいのですが、こんなことできますか?できるとすればどのようにすればよいのですか?

例えば、C:\商品管理\在庫一覧.mdbにフォーム商品があるとしたとき、
Form1のcommand1をクリックすると、C:\商品管理\在庫一覧.mdbがAccess2000で開き、フォーム商品が最初に表示されるようにしたいのですが・・・
ちなみに、Access2000の起動時の設定では他のフォームが最初に開くようになっています。
よろしくお願いします。

Aベストアンサー

オートメーションを使ってAccessを制御しましょう。
で、他のフォームが最初に開くようになっていることなので、最初に開くフォームを閉じてからAccessを表示するようにすればいいと思います。

Dim acs as Object

'AccessのApplicationオブジェクトを取得する。
Set acs = CreateObject("Access.Application")

'c:\test.mdbを開くacs.OpenCurrentDatabase "c:\test.mdb"

'起動時に開かれたフォームを閉じる
'2はacForm定数のこと
acs.Close 2,"フォーム名"

'Accessを表示させる
acs.Visible = True

'表示させたいフォームを開く
acs.OpenForm "フォーム名"


こんな感じで。

最後に、Accessを終わらせるときは

'オブジェクトの開放
Set acs = Nothing

で、オブジェクトを開放してください。

オートメーションを使ってAccessを制御しましょう。
で、他のフォームが最初に開くようになっていることなので、最初に開くフォームを閉じてからAccessを表示するようにすればいいと思います。

Dim acs as Object

'AccessのApplicationオブジェクトを取得する。
Set acs = CreateObject("Access.Application")

'c:\test.mdbを開くacs.OpenCurrentDatabase "c:\test.mdb"

'起動時に開かれたフォームを閉じる
'2はacForm定数のこと
acs.Close 2,"フォーム名"

'Accessを表示させる
acs.Visibl...続きを読む

QW-ZERO3 ESの通信エラー

最近、メールの受信が出来なく、手動で受信をかけてもエラ
ーが出る事があります。もちろん、電波状況は良好です。
一度エラーが起きると、メールの受信もネットもできなくなります。
今の所、電池をいったん抜いたら、通信ができるようになりますが、根本的な解決になっていない状態です。同様の障害の復旧方法をご存知の方がおられましたらお願いします。

Aベストアンサー

データバックアップ後、フルリセット
電池裏のリセットおし、Fn+Fキー同時押し&電源ボタン

QVB2005とADO.NETを使った時のSELECT文の書き方で分らないことがあり困っています

VB2005とADO.NETを本で勉強中の超初心者です。本のサンプルを参考に以下のようなコ-ドを作って動作させるとDataGridViewにDBの内容が正しく表示されますが、
Dim cn As New OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=C:\VB2005\Order.mdb"
Dim da As OleDbDataAdapter
da = New OleDbDataAdapter("SELECT * FROM Goods;", cn)
Dim ds As New DataSet
da.Fill(ds, "Goods")
DataGridView1.DataSource = ds.Tables("Good
特定のコ-ドをFormのテキストボックスから入力して、表示させたいと思い"SELECT * FROM Goods WHERE GoodsId = TextBox1.Text;"とするとエラ-になってしまいました。ちなみに"SELECT * FROM Goods WHERE GoodsId = 'A0001';として動作させるとA0001だけを表示することはできました。
どのようにすればテキストボックスや変数で、表示したいコ-ドを指定したら良いか教えて頂けないでしょうか。

VB2005とADO.NETを本で勉強中の超初心者です。本のサンプルを参考に以下のようなコ-ドを作って動作させるとDataGridViewにDBの内容が正しく表示されますが、
Dim cn As New OleDbConnection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=C:\VB2005\Order.mdb"
Dim da As OleDbDataAdapter
da = New OleDbDataAdapter("SELECT * FROM Goods;", cn)
Dim ds As New DataSet
da.Fill(ds, "Goods")
...続きを読む

Aベストアンサー

"SELECT * FROM Goods WHERE GoodsId = TextBox1.Text;"
"SELECT * FROM Goods WHERE GoodsId = 'A0001';"
とで何が違うのかよく考えて見ましょう
『"SELECT * FROM Goods WHERE GoodsId = 』までは同じですよね

"SELECT * FROM Goods WHERE GoodsId = TextBox1.Text;"
ですと GoodsIdが『TextBox1.Text』というMDBが理解できる何かと一致しないといけません
TextBox1.Textを知っているのはVB側でありMDB側ではありません

"SELECT * FROM Goods WHERE GoodsId = 'A0001';"
の場合は GoodsIdが『A0001』という文字列のレコードを取得します

となると "SELECT * FROM Goods WHERE GoodsId = '検索対象';"
とすれば良いようです
前半部分は"SELECT * FROM Goods WHERE GoodsId = '"
検索対象を TextBox1.Text
末尾を"';"
として文字列を連結してやれば良いでしょう

結果として
"SELECT * FROM Goods WHERE GoodsId = '" & TextBox1.Text & "';"
で期待する結果が得られそうです

"SELECT * FROM Goods WHERE GoodsId = TextBox1.Text;"
"SELECT * FROM Goods WHERE GoodsId = 'A0001';"
とで何が違うのかよく考えて見ましょう
『"SELECT * FROM Goods WHERE GoodsId = 』までは同じですよね

"SELECT * FROM Goods WHERE GoodsId = TextBox1.Text;"
ですと GoodsIdが『TextBox1.Text』というMDBが理解できる何かと一致しないといけません
TextBox1.Textを知っているのはVB側でありMDB側ではありません

"SELECT * FROM Goods WHERE GoodsId = 'A0001';"
の場合は GoodsIdが『A0001...続きを読む


人気Q&Aランキング

おすすめ情報