C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

VB.NET3013でMDBを検索更新する方法

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■95427 / inTopicNo.1)  VB.NET3013でMDBを検索更新する方法
  
□投稿者/ 素人さん (1回)-(2020/08/01(Sat) 13:11:13)

分類:[.NET 全般] 

すみません。ド素人です
VB.net 2013でMDBを検索、更新、追加したいのですが
ご存じの方お教授願います
ACCESSのディレクトリ指定
エラー突起のロールバック
DAO ADOの何を使用するのレベルでお願いします
色々HPを参照したのですが、
記載内容をそのままコピーしてもエラーになります
(どれを参照するかわかりません)

どこかに素人でも何をどの様に参照するか
解るレベルのHP存在がどこにあるかでも結構ですので
おしえてください


引用返信 編集キー/
■95428 / inTopicNo.2)  Re[1]: VB.NET3013でMDBを検索更新する方法
□投稿者/ WebSurfer (2087回)-(2020/08/01(Sat) 14:31:54)
No95427 (素人さん さん) に返信

Visual Studio のデータソース構成ウィザードを使って以下のような構成のアプリを作ってみてはいかが?

DataGridview ⇔ BindingSource / BindingNavigator ⇔ DataSet / DataTable ⇔ DataAdapter ⇔ Access

作り方は以下のチュートリアルを見てください。DB が SQL Server の場合ですが Access でも可能です。

チュートリアル : データベースへのデータの保存 (単一テーブル)
https://docs.microsoft.com/ja-jp/previous-versions/0f92s97z(v=vs.120)

10 行でズバリ !! 非接続型のデータ アクセス
https://github.com/microsoftarchive/msdn-code-gallery-community-0-9-non-alphabetic/tree/master/10%20%E8%A1%8C%E3%81%A7%E3%82%BA%E3%83%90%E3%83%AA%20!!%20%E9%9D%9E%E6%8E%A5%E7%B6%9A%E5%9E%8B%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%20%28ADO.NET%29%20%28VB%29


そうすると、どういうことができるかと言うと、以下の記事の「非接続型のデータ更新」のセクションの図1
と図2のようなことができます(文章は読まなくてもいいので図だけ見てください)。

DB 設計者のための明解 ADO.NET 第 1 回
https://docs.microsoft.com/ja-jp/previous-versions/cc482903(v=msdn.10)

図2の DataSet 右側に BindingSource / BindingNavigator 経由で DataGridView が接続されていると思っ
てください。

ユーザーが DataGridView を操作(行の削除・追加・訂正)した結果は図1にあるように DataSet / DataTable
に反映されます。

ユーザーの編集操作が終わったら Update メソッドで図1の編集結果が一度に DB に反映されます。
引用返信 編集キー/
■95431 / inTopicNo.3)  Re[2]: VB.NET3013でMDBを検索更新する方法
□投稿者/ 素人さん (2回)-(2020/08/01(Sat) 20:53:50)

せっかくのご指導でしたが
下名には理解出来ませんでした

本当に申し訳ありません
下名、COBOLを大昔にやったことのあるだけの人間ですので


No95428 (WebSurfer さん) に返信
> ■No95427 (素人さん さん) に返信
>
> Visual Studio のデータソース構成ウィザードを使って以下のような構成のアプリを作ってみてはいかが?
>
> DataGridview ⇔ BindingSource / BindingNavigator ⇔ DataSet / DataTable ⇔ DataAdapter ⇔ Access
>
> 作り方は以下のチュートリアルを見てください。DB が SQL Server の場合ですが Access でも可能です。
>
> チュートリアル : データベースへのデータの保存 (単一テーブル)
> https://docs.microsoft.com/ja-jp/previous-versions/0f92s97z(v=vs.120)
>
> 10 行でズバリ !! 非接続型のデータ アクセス
> https://github.com/microsoftarchive/msdn-code-gallery-community-0-9-non-alphabetic/tree/master/10%20%E8%A1%8C%E3%81%A7%E3%82%BA%E3%83%90%E3%83%AA%20!!%20%E9%9D%9E%E6%8E%A5%E7%B6%9A%E5%9E%8B%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%20%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%20%28ADO.NET%29%20%28VB%29
>
>
> そうすると、どういうことができるかと言うと、以下の記事の「非接続型のデータ更新」のセクションの図1
> と図2のようなことができます(文章は読まなくてもいいので図だけ見てください)。
>
> DB 設計者のための明解 ADO.NET 第 1 回
> https://docs.microsoft.com/ja-jp/previous-versions/cc482903(v=msdn.10)
>
> 図2の DataSet 右側に BindingSource / BindingNavigator 経由で DataGridView が接続されていると思っ
> てください。
>
> ユーザーが DataGridView を操作(行の削除・追加・訂正)した結果は図1にあるように DataSet / DataTable
> に反映されます。
>
> ユーザーの編集操作が終わったら Update メソッドで図1の編集結果が一度に DB に反映されます。
引用返信 編集キー/
■95433 / inTopicNo.4)  Re[3]: VB.NET3013でMDBを検索更新する方法
□投稿者/ WebSurfer (2088回)-(2020/08/01(Sat) 21:56:36)
No95431 (素人さん さん) に返信
>
> せっかくのご指導でしたが
> 下名には理解出来ませんでした
>
> 本当に申し訳ありません
> 下名、COBOLを大昔にやったことのあるだけの人間ですので

では、分かるようになる程度まで勉強するなり自助努力で知識をつけてください。

掲示板で一から十まで手取り足取り教えてもらってということを期待しているとすると
ちょっと自分にはそこまでするのは無理です。
引用返信 編集キー/
■95435 / inTopicNo.5)  Re[1]: VB.NET3013でMDBを検索更新する方法
□投稿者/ キングダム (61回)-(2020/08/01(Sat) 22:16:46)
No95427 (素人さん さん) に返信
テーブル作って、レコードを挿入、更新、検索できれば良いのですよね。
コンソールアプリでも良いですか? ちょっと書いてみようかしら。
引用返信 編集キー/
■95438 / inTopicNo.6)  Re[2]: VB.NET3013でMDBを検索更新する方法
□投稿者/ くまくま (26回)-(2020/08/01(Sat) 22:36:49)
私もCOBOL出身でAccess覚えたんで
はじめは戸惑いますが
Accessがインストールされていれば
Accessをつかって「データベースとは?」を勉強されるのが良いでしょう。
(Accessは簡単にデータベースを構築できますので)

キーワードは「SQL」です。
引用返信 編集キー/
■95441 / inTopicNo.7)  Re[3]: VB.NET3013でMDBを検索更新する方法
□投稿者/ 素人さん (3回)-(2020/08/02(Sun) 03:44:00)
不勉強かつ説明不足で申し訳ありません
たとえば
 
    Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
Dim SQLCm As OleDbCommand = Cn.CreateCommand

SQLCm.CommandText = "INSERT INTO T_目マスタ VALUES (999, 'テスト', 'てすと', 1, 'これはテストです。')"

Cn.Open()
SQLCm.ExecuteNonQuery()
Cn.Close()

http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=10235
よりコピーしてかくと

OleDbConnection と OleDbCommand が<定義されていません>でエラーとなります
@何を<参照>すべきか とか
A異常時のロールバック方法(サーバにある同じMDBを複数のPCからメンテ)とか
BSQLの書き方(これはいろんなHPにある)
CMDBの位置の書き方(上文では("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
 (いろんなHPを参照しましたが指定してないものが多い)
等を勉強したいのです










No95438 (くまくま さん) に返信
> 私もCOBOL出身でAccess覚えたんで
> はじめは戸惑いますが
> Accessがインストールされていれば
> Accessをつかって「データベースとは?」を勉強されるのが良いでしょう。
> (Accessは簡単にデータベースを構築できますので)
>
> キーワードは「SQL」です。
引用返信 編集キー/
■95445 / inTopicNo.8)  Re[4]: VB.NET3013でMDBを検索更新する方法
□投稿者/ WebSurfer (2089回)-(2020/08/02(Sun) 10:11:08)
No95441 (素人さん さん) に返信

引用は必要最低限にとどめてください。スレッドが見づらくなるので。

> OleDbConnection と OleDbCommand が<定義されていません>でエラーとなります
> @何を<参照>すべきか とか

そこは System.Data.OleDb をインポートすれば解決すると思います

・・・が、そういうのは知らない方がおかしいと思われるような基本的なことです。本を
読むなどして VB.NET の基本的な知識を身に着けることをお勧めします。

せめてそのレベルの基本的な知識は身に着けてから質問していただかないとここのような
掲示板では話が通じにくいし、一つの課題の解決が次の疑問を生んで次から次へと質問を
繰り返すというマズイいパターンに陥ることになると思います。

> A異常時のロールバック方法(サーバにある同じMDBを複数のPCからメンテ)とか

( )の中の文からすると、ロールバックの話ではなく同時実行制御の話のように思えます
が、どっちなんですか? そういわれてピンとこないのでしたら、ググるなどして調べてみ
てください。

> BSQLの書き方(これはいろんなHPにある)

質問者さんが何をしたいのかによります。それが具体的に書いてないと誰もアドバイスでき
ないと思います。少なくともエスパーではない自分には無理です。

> CMDBの位置の書き方(上文では("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
> (いろんなHPを参照しましたが指定してないものが多い)

指定してないなんてことはあり得ません。「access 接続文字列」でググってみてください。

引用返信 編集キー/
■95459 / inTopicNo.9)  Re[4]: VB.NET3013でMDBを検索更新する方法
□投稿者/ 大谷刑部 (92回)-(2020/08/03(Mon) 10:33:16)
No95441 (素人さん さん) に返信
> OleDbConnection と OleDbCommand が<定義されていません>でエラーとなります
> @何を<参照>すべきか とか
単なるImports句の不足です。

↓わからないようなら下記を見てください。
https://docs.microsoft.com/ja-jp/dotnet/visual-basic/programming-guide/program-structure/references-and-the-imports-statement

> A異常時のロールバック方法(サーバにある同じMDBを複数のPCからメンテ)とか
複数から動かすなら、ロールバック以前に排他制御を考えた方がいいですね。
Accessは排他モードで開いてる時に異常終了で落ちたりすると、他の人が開けないとかよく発生しますし。

> CMDBの位置の書き方(上文では("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
>  (いろんなHPを参照しましたが指定してないものが多い)
> 等を勉強したいのです
指定してないというより、掲載してる人自体が事実誤認で間違った情報を載せてることも散見されます。
ターゲットの拡張子がmdbであることから類推すると、Jet.OLEDBで問題ないと推測させれます。
2007以降のファイル形式に変換する場合はACE.OLEDBしか使えませんのでその点はご注意を。

引用返信 編集キー/
■95462 / inTopicNo.10)  Re[5]: VB.NET3013でMDBを検索更新する方法
□投稿者/ くまくま (27回)-(2020/08/03(Mon) 12:45:55)
たぶん素人さんからすると
WebSurferさんや大谷刑部さんの話されている事全くわからないでしょう

素人さんがなさろうとされている事って
「VB.net」から「Access」への接続をして何かをしたいって事なんでしょうが
基本的に「Access」(データベース)とは何か?を理解していないとお話しができないんですよ。
例えるなら私らからすると「相手が英語が全く分からないのに英文の説明をしなくてはならない」状態なんです。

データベースを操る言語はSQLという文法が決まっていて
データベースの種類によって違いはあるけれども、まず基本SQLぐらいは覚えてもらいたいですね
(「テーブル」作成・参照・データ追加・データ削除の基本4パターン)

で問題がいきなり「VB.net」から「Access」して操作しようとしている点なんです
「Access」だと「クエリ―」という機能で直観的に操作することで自動でSQLに変換してくれる機能があります。
また「テーブル」も「Excel」感覚で作ることも可能です。
まずは「Access」(データベース)をいじって何ができるかしっかり把握してから
外部(VB.net)から操作する事を覚えられたらよろしいかと思います。

あと注意点は
外部からデータベースにアクセスする方法も日々進化しています。
ここ20年でも大きく3〜4度変更(DAO→ADOとか)とかなっていますし、細かいのを合わせれば20〜30ぐらい?

そうすると去年の情報でも古いぐらいなんですよ
検索される際に古い情報と新しい情報がヒットしますので
知識がないと振り分けができないとなります。

こちらも説明はしたいけど「この情報は新しい・古い」「VB.netやAccessの情報ではない」とか説明しだすとキリがなくなってしまいます。
そこで基本はMSDN検索に絞って最新情報を追いかけるようにして下さい。

ちなみにデータベースの接続時の基本情報が載っていないのは
「各PCで異なる設定」で載せてもしょうがないからです。
接続方法によってツールがあってそこで指定するとわかる文字列です。
引用返信 編集キー/
■95465 / inTopicNo.11)  Re[6]: VB.NET3013でMDBを検索更新する方法
□投稿者/ 大谷刑部 (94回)-(2020/08/03(Mon) 13:31:10)
No95462 (くまくま さん) に返信
> データベースを操る言語はSQLという文法が決まっていて
> データベースの種類によって違いはあるけれども、まず基本SQLぐらいは覚えてもらいたいですね
> (「テーブル」作成・参照・データ追加・データ削除の基本4パターン)
お言葉ですが、今回の質問者はさすがにSQLの基本はわかってると思いますけど。
今回はOLEDB接続のようなので、JetSQLとANSISQLの違いを意識する必要もないですし、あまりここは強調しなくてもよいかと。
実際、質問者のサンプルの構文も間違ってません。

> で問題がいきなり「VB.net」から「Access」して操作しようとしている点なんです
そうでしょうか?
質問者がAccessの勉強をしたいんならともかく、.Net関連の技術を勉強したいと思ってるんなら、
別にいきなりという気もしません。
VB.netでの定義上の手続きをちゃんとすれば動くだろうというだけの話です。

> 「Access」だと「クエリ―」という機能で直観的に操作することで自動でSQLに変換してくれる機能があります。
> また「テーブル」も「Excel」感覚で作ることも可能です。
そのこと時代は否定はしませんが、デフォルト設定だとJetSQLで自動変換される上、かっこが付きまくるので、
SQLとしてはかなり冗長な仕上がりになりますよね。
SQLを覚えるという観点からはむしろマイナスのやり方と思います。

> まずは「Access」(データベース)をいじって何ができるかしっかり把握してから
> 外部(VB.net)から操作する事を覚えられたらよろしいかと思います。
質問者さんがどっちを知りたいかに拠るので、どっちを先に覚えるかというのはあまり優先度をつける必要はないと思います。

> あと注意点は
> 外部からデータベースにアクセスする方法も日々進化しています。
> ここ20年でも大きく3〜4度変更(DAO→ADOとか)とかなっていますし、細かいのを合わせれば20〜30ぐらい?
最終バージョンが更新されてないというだけで、Access特化でパフォーマンス重視ならいまだにDAOが最適ですよ。
それに、.netが世に出てから既に20年近くになりますが、Accessへの接続に関してはほぼ変わってない内容に思います。
.netから接続してるといっても、OLEDBを経由してるわけだからADOを使ってるのとほぼ変わりません。
むしろその前の5年くらいがころころ常識が変わった気がします。

> そうすると去年の情報でも古いぐらいなんですよ
それはそんなことはないです。

> こちらも説明はしたいけど「この情報は新しい・古い」「VB.netやAccessの情報ではない」とか説明しだすとキリがなくなってしまいます。
> そこで基本はMSDN検索に絞って最新情報を追いかけるようにして下さい。
これは同意です。
中途半端な知識の人の情報よりまず開発元の情報というのは正しいです。

引用返信 編集キー/
■95466 / inTopicNo.12)  Re[7]: VB.NET3013でMDBを検索更新する方法
□投稿者/ くまくま (29回)-(2020/08/03(Mon) 14:42:20)
WebSurferが説明されているURL拝見しましたが良い資料指示だと思いますし
大谷刑部さんが書かれていることもまっとうな意見だと思います。

AccessのSQL構文が特殊な面がある事。
DAOやADO、OLEDBを経由等論争になったりもしましたし
情報の鮮度に関しても
それをここで議論はしたくないです。

ただ昔私もCOBOLから転身してVB6からAccessに接続しての作業で苦労しました。
VB.net自体はもらったデータをどう表示するかだけなので大丈夫なんですが、
ブレークポイントの置けない部分
接続も含めCOBOL(JCL)ではないテーブルの扱い方の概念が一番苦労しました。

私が話しているのは経験則のお話です。
質問者様がエラーについて「なにがエラーとなっているかも見つけれれない様子」から
基本Access(データベース)の構築・基本参照だけでもしっかり理解された方が
あとの理解も早くなる経験(自分以外の人に教える場合でも)から
同じように苦しんだ物として長々と書いた次第です。

気分を害されたのなら申し訳ございません。
引用返信 編集キー/
■95495 / inTopicNo.13)  Re[8]: VB.NET3013でMDBを検索更新する方法
□投稿者/ 素人さん (4回)-(2020/08/07(Fri) 19:37:01)

ありがとうございます。
色々勉強してみます


No95466 (くまくま さん) に返信
> WebSurferが説明されているURL拝見しましたが良い資料指示だと思いますし
> 大谷刑部さんが書かれていることもまっとうな意見だと思います。
>
> AccessのSQL構文が特殊な面がある事。
> DAOやADO、OLEDBを経由等論争になったりもしましたし
> 情報の鮮度に関しても
> それをここで議論はしたくないです。
>
> ただ昔私もCOBOLから転身してVB6からAccessに接続しての作業で苦労しました。
> VB.net自体はもらったデータをどう表示するかだけなので大丈夫なんですが、
> ブレークポイントの置けない部分
> 接続も含めCOBOL(JCL)ではないテーブルの扱い方の概念が一番苦労しました。
>
> 私が話しているのは経験則のお話です。
> 質問者様がエラーについて「なにがエラーとなっているかも見つけれれない様子」から
> 基本Access(データベース)の構築・基本参照だけでもしっかり理解された方が
> あとの理解も早くなる経験(自分以外の人に教える場合でも)から
> 同じように苦しんだ物として長々と書いた次第です。
>
> 気分を害されたのなら申し訳ございません。
引用返信 編集キー/
■95496 / inTopicNo.14)  Re[9]: VB.NET3013でMDBを検索更新する方法
□投稿者/ WebSurfer (2093回)-(2020/08/07(Fri) 19:53:25)
No95495 (素人さん さん) に返信

引用は必要最低限にとどめてください。スレッドが見づらくなるので・・・と言ったはず

逆切れですか?
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ