• ベストアンサー

(C#,VB)DataTableをAからBへ

(C#,VB)DataTableをAからBへ DB1とDB2は別々にある同じDBです。 DB1から取得してきたDataTableを微修正し、空の場合は動的に作成し、DB2に入れたいのですが、 セルを一個一個、数値なのか文字なのかチェックしてSQLを組んでDB2に入れると、大変な作業になり、何より汎用性がありません。 環境は.NET1.1です。初心者です、やさしく教えていただけると助かります。よろしくお願いいたします。

noname#147912
noname#147912

質問者が選んだベストアンサー

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

こういう処理をコントロールでやろうという 発想が間違っています。 DBにもよりますが、大抵は管理情報を持って いて、ユーザ定義テーブル、フィールド情報が 取得できます。これを使って、動的に生成した SQLを実行するのが一般的でしょう。 こうすれば、テーブルが増減してもレイアウトが 変更されても、このプログラムは修正なしで実行 できますし、「汎用性」が高いと言えます。 つまり、どんな業務でも類似の処理に、そのまま 使用できるからです。ODBC.Connectionあたりの オブジェクトをググッて、サンプルを探すと色々と 出てきます。 あと、ダンプ⇒リストア(DBによりコマンドが 異なる)のように、スクリプトで解決する手段も あります。こっちの方がプログラムしないだけ、 楽です。それから、こういう外部コマンドをVB から実行するというのもありますね。これも同じ 理由で汎用性があります。

その他の回答 (1)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

データベースによっては管理ツールでそのままコピーしたり、 ダンプファイルでインポートしたり、リンクテーブルで参照 したりできます。 VB でやるべき作業なのか判断するには情報が足りない感じです。 .NET のコントロールである DataTable がデータベースの メタ情報を全てカバーしているわけでもないですし、根本的に 考え方を変えたほうが良い気がします。

関連するQ&A

  • VB 2005 データテーブルのソートについて

    恐れ入ります。 VB 2005 初心者です。 さっそく質問させていただきます。 VB 2005にて、SQL Server 2003を利用し、 とあるシステムを作成しています。 その中で、DBより取得したデータを、 DataTableのdatatblという変数に格納し、 さらにそのdatatblより、とある条件にて値が欲しくなったので、 dr = datatbl.Select("clm = " & strData & " AND clm2 = '0'") のようにし、DataRowのdrという変数につっこんでます。 ここで、ソートによる並んだデータとして値が必要になりました。 DBで取得し、条件でDataRowにつっこんだ後に、データを ソートすることは可能でしょうか? 可能であれば、やり方を教えていただけると幸いです。 宜しくお願いいたします。

  • DataTableの使い方についてアドバイス

    VB2008、SQLServer2008で開発しています。 フォームにリストボックス、ボタンを追加します。 リストにはテーブルから全データを表示します。 選択後、ボタンを押すと選択されたデータのコードを テーブルに書込みにいきます。 こういうものを作る場合、DataTableはフォームクラスでパブリックで作り 書込みで使うコードもDataTableから取得し フォームが終わるときに解放するのでしょうか? DataTableがオブジェクトとしてある間はDBにつなぎっぱなしでしょうか?

  • VB2005→Excelへの出力

    現在、以下環境にてシステム開発を行っています。 OS:WindowsXP DB:SQL Server 2005 画面系:Visual Studio 2005 (VB) 帳票系:Microsoft Office 2003 (Excel) ここで質問なのですが、 VBにて取得したデータ(DBから取得)を、 Excelファイルの帳票テンプレートの名前付きセルに貼り付けたいのですが、 方法がわかりません。VB、Excelでの開発(プログラミング)初心者です。 「Imports Microsoft.Office.Interop.Owc11」 をインポートしてるだけで停まっています。 情報足らずであれば、また追記します。 とりあえず要件まで。 宜しくお願いします。

  • DataTableにデータを用意した後DBに反映する方法

    VB2008 SQLServer2008で開発しています。 DBにデータを追加したいと思っています。 DataTableを作成しているので これを使って簡単にDBにデータを追加することは できないでしょうか? そのやり方の場合 insert文を1行ずつ実行するのと処理時間に差はあるのでしょうか?

  • VBのラベルを説明コメント付きでエクセルへ

    VB初心者です。 VBにあるラベルの数値または文字をエクセルに送り、送ったセルにカーソルをもって行くと数値または文字の説明が出るようにしたいのですが、、、 VBでは「TooltipText」を使いますよね。そのような動きをさせたいのです。 コードを書いていただくとありがたいです。よろしくお願いします。

  • VB.NET ゼロ埋め

    VB.NETでSQLから取得した数値をゼロ埋めしたいのですが(1を01に)。 正確には、HTML内の <itemtemplate>  <%#   "<tr>" + _    "<td>" + DataBinder.Eval("あ","{0}") +</td>" + _   "</tr>"  %> </itemtemplate> のSQLより取得した、DataBinder.Eval("あ","{0}") に入ってきた数値を変換したい。 ど素人で申し訳ないですが、よろしくお願いします。

  • VB2.0からVB6.0へのアップグレードについて

    VB2.0で作成したアプリをWindowsXP上で動作するようVB6.0にアップグレードすることになりました。 VBXからOCXへの置き換え、文字列処理のUnicode対応、DLL呼出しの修正など問題点は多いようです。 そこで、これまでにこのような作業をした方がいらしたら手順や注意点などを教えてください。 また、これに関して書かれているHPなどあれば教えてください。

  • VB2013でVB6でのDBは利用可能?

    VB4.0で作成してましたMicrosoft.Jet.OLEDB.4.0のDBをSQLSERVER2012で作成したDBに移行したいのですが VB2013では読み込めないのでしょうか? データーベースエクスプローラーでは中身の確認はできるのですが プログラムで走らせるとSqlDataAdapter(sql, cnStr)のところでエラー下記[エラー結果]とになります Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim cnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\SERVER\DB名.mdb" Dim sql As String sql = "SELECT * FROM テーブル名" Dim dt1 As New DataTable Dim da1 As New SqlDataAdapter(sql, cnStr) Try da1.Fill(dt1) DataGridView1.DataSource = dt1 Catch ex As Exception End Try End Sub [エラー結果] 型 'System.ArgumentException' のハンドルされていない例外が System.Data.dll で発生しました 追加情報:キーワードはサポートされていません : 'provider' 以前のmdbファイルが読み込める方法はないのでしょうか?

  • 既存のAccessのテーブルに空の領域を作成する

    既存のAccess2000のテーブルに空の領域を作成する プログラムを作っているのですが(下記参照)、 「データベースの形式 <ファイル名> を認識できません。(Error 3343)」の エラーが出ます。 【状況説明】 ・パスの内容、パス名、DB名はあっています。 ・編集前のDB前に戻して(テーブル内に空白データが無い状態)、  再実行してもダメでした。 ・参照設定「DAO 3.51 Object Libraly」はチェックしています。  「DAO 3.6 Object Libraly」にチェックすると、  「この名前は既にあるモジュール、プロジェクト、オブジェクト  ライブラリで使われています。」のメッセージが出て、チェック出来ません。 解決方法がありましたら、記入をお願い致します。 【作成プログラム】 'DB関連設定  Dim DBName As String(iniファイルから取得したDB名)  Dim SQL As String (SQL文領域)  Dim DB名  As DAO.Database 'データベース接続 Set DB = OpenDatabase(iniファイルから取得したパス & "\" &               DBName) '領域作成 Do While 数値 > 0 SQL名 = "" SQL名 = SQL名 & "INSERT INTO テーブル (A, B, C) " SQL名 = SQL名 & "VALUES ("", "", ""); " db.Execute (SQL) 数値 = 数値 - 1 Loop db.Close

  • VBを使って値が入らない

    text型のフィールドに下の文字列を入れようとすると ------ psStr = "D:/usr/toda/work/仕事/コーディング規約/VB/src/Base/ss.ico" objRec.Fields("field1").Value = psStr ---- ?Err.Description 複数ステップの OLE DB の操作でエラーが発生しました。各 OLE DB の状態の値を確認してください。作業は終了しませんでした。 というエラーが発生してしまいます。なぜか分かる方いますか?原因と対処の方法は? OS:WindowsXP+VB6です。 ADODBとPostgresODBCドライバでDBにつないでいます。 Common SQL Environmentだと入るのですが。