• ベストアンサー

ワークテーブルの作成について

kero_mioの回答

  • ベストアンサー
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

件数が多くなくて、メモリ容量も問題ないのであれば、 DataSetに溜めておくというのは、どうでしょうか? DBにワークテーブルを作ってチェックの方が良い場合は、 .NET側ではなく、DB側にストアドを作って、 全レコードのチェック結果をまとめて返すというのが 良いと思います。 (そのやり方の方が良いのであれば、別で提示します) 簡単ではありますが、.NETのDataSetを使ったチェック処理を VS.NET2002で、作ってみました。ご参考になれば幸いです CSVデータの内容 1,A,111111 2,B,222222 3,C,333333 4,D,444444 5,E,555555 ' ファイルを読む ' ファイルを読む Dim fs As New System.IO.StreamReader("c:\aaa.csv", System.Text.Encoding.ASCII) Dim buffer As String = fs.ReadToEnd() fs.Close() ' レコード単位に分割 Dim crlf As Char() = {Chr(13)} Dim records As String() = buffer.Split(crlf) Dim record As String ' データテーブルを作る Dim da As New System.Data.DataTable("aaa") da.Columns.Add("column1", GetType(String)) da.Columns.Add("column2", GetType(String)) da.Columns.Add("column3", GetType(String)) ' ファイルレコード → DataRow For Each record In records   If record.Trim().Equals("") Then     Exit For   End If   Dim columns As String() = record.Split(","c)   Dim i As Integer = 0   Dim dr As DataRow = da.NewRow()   For i = 0 To 2     dr.Item(i) = columns.GetValue(i)   Next   da.Rows.Add(dr) Next ' チェック処理 Dim searchKey As String = "111111" Dim condition As String = String.Format("column3={0}", searchKey) Dim hitRows As DataRow() = da.Select(condition) If hitRows.Length > 0 Then   ' レコードがある場合   MessageBox.Show("レコードあり")   ' TODO:この後は、レコードがある処理を行う Else   ' レコードがない場合   MessageBox.Show("レコードなし")   ' TODO:この後は、レコードがない処理を行う End If

関連するQ&A

  • MSDEのテーブルはどこに作成されているのでしょうか?

    お世話になります。 Access2000+VB.NETからMSDE2000RelAに移行勉強中です。 SQL Web Data Administratorを使用してテーブルを作成して 入力ツールやその他の画面を.NETで作成しました。 今度サーバーにそのデータを移そうと思ってテーブルのパスを 探したんですがよくわかりません。 そういえば作成するときにもどこに作成するのかというドライブ 名もディレクトリも指定しなかった(聞かれなかった)ように 思います。 拡張子は.dboなのでそれをキーに検索しても引っかかりません。 このデータベースファイルを探してコピーしたいのですが、そも そもデフォルトではどこに作成されるのかご教示いただけませんか? よろしくお願いいたします。

  • VBでMDBテーブルのKEYを指定した参照をしたい

    こんにちわ マスタデータのメンテナンス処理をVBで作ろうと思ってます。 MDBの顧客テーブルがあります。検索画面で顧客コードを入力して顧客テーブルより情報を表示して変更入力し、結果を顧客テーブルに反映更新する処理です。 検索画面で指定されたコードでテーブルを読むにはどのように書いたらよいのでしょうか。 皆様よろしくお願いいたします。

  • ハッシュテーブルの使い方

    こんにちわ。 いまVB.Net2003でプログラミングをしている者です。 ORACLEのあるテーブルの内容をハッシュテーブルに取り込んで, キー検索する処理をしたいのですが, 取り込む際,ハッシュテーブルの「Add」メソッドで 1件ずつ取り込むしかないのでしょうか? たとえばコンボボックスの「DataSource」プロパティに レコードセットを設定するように,一回で設定したいのですが, このような機能があるでしょうか? またハッシュテーブルはキーは1つしか設定できないようですが, このテーブルデータを2つのキーで検索するのはどうすれば 良いでしょうか?

  • PHPでmySQLのテーブルを作成したい

    今PHPの練習をしているのですが、作ろうとしているPHPの、 0:$tbname="データベース名"、とする。 1:データベースにアクセスする 2:アクセスしたデータベースに$tbnameと同じ名前のテーブルがあるかないかをチェック 3:同じ名前のテーブルがあるならそこで終了 4:同じ名前のテーブルがないなら、$tbnameをテーブル名、ID(INT)とNAME(CHAR)をカラム名とするテーブルを新規に作成する という動作をする部分のコードの書き方(どのようなSQL文を使えばいいのか)がわかりません。 どなたかご教示のほど、どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • ASP.NET テーブル

    ASP.NETを言語はVBで作っています。 そこで、検索についてですが GrieViewではなく、 テーブルで検索結果を表示させるようにした時に 検索結果の量が多いと下まで見る際に 見出しが隠れてしまいます。 スクロールしても見出しは動かずに テーブルのみにスクロール機能を作るには どうしたらいいでしょうか?

  • TruncateしたテーブルへのInsertの遅さが気になる

    こんにちわ。 日次処理として、毎晩ワークテーブルをTruncateしてInsertしなおすというプログラムを数年前に作りました。 このプログラムはVB6、ADO、OLE DBプロバイダはOracleのものを使っています。 他のテーブルからSelectし、それを元に1レコードずつInsert文を作っては実行を繰り返す処理で正直遅いのですが、このプログラムの動作が不思議です。 日々数十万件のInsertを行っているのですが、ログを確認すると最初の2万件のInsertには40分掛かるわりに最後の2万件は5分で終わるのです。 今まで処理時間の遅さが問題になることもなく、バグもなく動いているしであまり気にしていなかったのですが、最近なぜこのような動きになるのか気になってきました。 最初も最後もSelect結果に偏りはなく、Insert文を作る処理に掛かっている時間は同じようなものかと思います。 とすると、遅いのはDBでのInsert処理か?と考えています。 レコード件数が少ないうちのInsertには時間が掛かるものなんでしょうか? だとするとそれはなぜ? 別に処理速度を速くしたいとか言うことではなく、なぜInsertの処理時間にこれほどの差が生じるのかが気になっています。 なおこのテーブルは主キー以外に索引を作っていません。 Insert文を作る際の元になるデータは論理的な単位ごとにSelectします。1回がだいたい数十件ぐらいです。 またその論理的な単位の分のデータをInsertしおわるごとにcommitしています(数十件ごとのcommitになります)。

  • Accessのテーブルデータ

    Visual Basicで作成したソフトでAccessのテーブルデータを呼び出せるようにしたいです。 mdb形式(Access)のファイルはデータベースエクスプローラに表示できるみたいですが、sqlのデータベースみたいにvisual studio上でデザイナ的に操作できるのでしょうか。 Form上でmdb形式のテーブルデータが扱えればよいのですが、もし必要なコードがあるのでしたら参考程度にアドバイスください。

  • 他のデータベースとのテーブル結合

    いつもお世話になっております。 VB.netでwindowsアプリケーションの作成しているところです。 SQLサーバーのテーブルを参照していますが、テーブルの結合は同じデータベース内にないと結合できないのでしょうか? 'SQL接続処理 Dim strConn As String = "Password='';User ID=sa;Initial Catalog=test;Data Source=server1" と、testというデータベースがありその中に幾つかテーブルがあります。 このtestデータベースにないテーブルが必要になり、aaaデータベース内の テーブルを結合しようとしたのですが、出来ません。 Catalog=test,aaaとやってみたり、SELECT * FROM tbl1,aaa.tbl2などとしてみましたが、遠いようです。 SQLのクエリを使って、テーブルの追加をすると同じデータベース内のテーブルしか出てこないので、出来ないのかなと思っていますがどうでしょうか? わかる方がいましたら教えてください。

  • ピボットテーブルの手順

    お願いします。Accessでフォームを作り、 入力していこうとしています。入力フォームは出来ています。 これに、データを入れていってデータベースを作っていこうと思いますが、 データベース(数値)を作った後で、 Excellにエクスポートせずに、 ExcellのΣのような集計をしたいのですが、 ヘルプを見ましたが、よく分からないです。 ピボットテーブルで 数値データの集計を行うデータフィールドだとかが あったんですが、やはり、ピボットテーブルから行うのでしょうか? ピボットテーブルをやろうとしましたが、上手く行きません。 参考本も買おうかなとは思いますが、 その前にと思い質問しています。 どうのような手順で行ったらいいのでしょう。 参考サイトなどがあれば、お願いしたいと思います。 ピボットテーブルでQ&Aを検索しましたが、 私の質問は、初歩的過ぎて、参考になるのはありませんでした。

  • ACCESS97で テーブルの更新について

    ACCESS97で 相談したいことがあります。 定期的にあるテーブルを作成する時、 (1)テーブル作成クエリーを毎回 実施する方法と (2)元々テーブルを作っておいて  毎回、全件削除クエリー、全件追加クエリーを実行する 方法などがあります。  得られる結果は同じです。 この時、毎回テーブル作成クエリーを実施すると ムダにアクセス自体のファイルが大きくなったり データベースが壊れることが多い と聞いたので (2)の方にしたのですが、処理時間が(1)よりも掛かってしまいます。 そこで、上記(1),(2)に関する方法はどちらの方がお勧めでしょうか? ※ 件数は100000件 くらいあります。