none
Accessのデータが読めない RRS feed

  • 質問

  • 在庫システムで使用していたPCが壊れたので、使用していないPCに在庫システムを移行することになりました。

    前任者からのマニュアル通り上司が行ってくれたのですが、exeファイルと、Accessのファイルと、CrystalReportを入れれば動作するとあったので

    その通りしても、なぜかAccessにある職員データだけ読めないのです。exeファイルを起動すると、VBで作ったと思われるフォームが起動し

    本来はバーコードリーダーでCD,DVDなどのバーコードを赤外線で読んで、個数や使用者をドロップダウンから選びます、

    Accessの職員データと部名データだけは、スタンドアロンPCからサーバーに接続しAccessDBをコピーし更新をします。これはAccessの職員テーブルをみると

    ちゃんと新しい方もテーブルにあるので、うまく行ってます。

    問題はなぜ職員データがVBのフォームに表示されないかが不明です。

    とりあえず、前任者の方が使用していたPCを見つけ、VBのソースを探していますが見つかりません。自分で調べ、dllファイルをexeファイルと同じフォルダに入れれば

    うまく動作するとあったので、dllを入れましたが同じでした。

    前任者の方はご自身のVSを使っていたようなので、評価版のVSをインストールし、VB(2008Express)を使用できるようにはしました。

    前任者のPCのLocalSetting¥ApplicationData¥Microsoft¥VBExpressの中に在庫システムのexeファイルを見つけました。

    ソースをみてもVBは少ししかわからないのですが、何が原因でアクセスの職員データがフォームに表示されないのでしょうか?

    VBは初心者なので、どうぞよろしくお願いいたします。、

    2011年7月6日 1:55

回答

  • 対象の Access データベース ファイルは消耗品と職員で合わせて一つなのでしょうか?それとも、それぞれに一つずつあるのでしょうか?
    また、実際に Access で開いて最新の職員データが入っていることを確認したデータベース ファイル以外に、同じようなファイルが他に存在していないでしょうか?
    そもそも、件のアプリケーションは正しく動作できているけれども、肝心のデータとして別のものを読み込んでいて、データが空っぽという可能性もあると思います。
    別のデータベース ファイルとか、実際に読み込んでいると思われるデータベース ファイルとかに、空の職員データが混じっていたりしませんか?

    ソースがないとしても ILSpy のようなツールを使えばソース コードを生成することはできます。(残念ながら C# のみですが)
    ソースを読みこなすスキルは必須ですが、アプリケーションがどういう動作をして、その結果職員データが空っぽになっているかを追うことはできます。

    無償の逆コンパイラ「ILSpy」を利用するには?[C#] - @IT
    http://www.atmarkit.co.jp/fdotnet/dotnettips/1055ilspy/ilspy.html

    # 本当は前任者なり上司なりを捕まえて、根掘り葉掘り聞きだすのが筋なのでしょうが、上司は中身をまるで把握していないし、前任者は手の届かないところにいるということなのでしょうか。
    • 回答としてマーク 山本春海 2011年8月2日 5:39
    2011年7月6日 8:37

すべての返信

  • 職員データや部品データというのはテーブルのことでしょうか? もしそうだとすれば、Accessの他のテーブルは読めているのでしょうか?
    また職員データのみ表示されないとありますが、その際に何かエラーが表示されるのでしょうか? それともエラーは表示されず、本来表示されるデータが表示されないということでしょうか?

    本当にそのAccessのデータベースを読みに行っているかは確認できていますでしょうか? 例えば、そのAccessのデータベースを削除した場合にVBで表示しようとすると、エラーが表示されますでしょうか?

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年7月6日 3:14
    モデレータ
  • trapemiyaさんへ

    レスありがとうございます。データはすべてAccessのテーブルです。Accessではテーブル以外使用してないようで、フォームだけVBで作成しているものだと思われます。

    Accessを起動して(Accessは得意です)テーブルすべて確認しましたが、データはあります。人事異動の際などにサーバーから更新する

    職員データもちゃんと最新のものにテーブルのデータは置き換わっています。

    エラーはでません。AccessのDBを同じフォルダから削除すると「DB Error」が表示されます。

    やはりソースがないと動かないのでしょうか?

    2011年7月6日 4:20
  • 確認ですが、職員テーブル以外のデータはVBで問題なく表示されているのでしょうか?

    今までいただいた情報を整理すると、

    >エラーはでません。AccessのDBを同じフォルダから削除すると「DB Error」が表示されます。

    以上より間違いなく当該のAccessのDBを見に行っていると思われます。

    >エラーはでません。

    VBから当該のテーブルもしくはビューを認識できていると思われます。もし認識できなければエラーが出るでしょう。
    そうなると何らかの抽出条件が合っていないのかもしれません。

    ちなみにソースが無くてもアプリケーションの動作自体には問題ありません。AccessのVBAと違い、ソースをコンパイルして実行ファイルであるEXEが出来ているためです。
    ただ、ソースがあると発行しているSQL等がわかりますので、問題解決に大いに役立ちます。

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年7月6日 5:19
    モデレータ
  • Local Setting¥AplicationData¥Microsoft¥Vcbexpress¥10.0¥ProjectAssembliesフォルダに4つほどフォルダがあります

    その4つの中に

    ・実行ファイル(exe)とアクセスDB(消耗品DB)

    ・職員SQLDataset.Designer.vb.dll・

    ・消耗品SQLDataset.Designer.vb.dll

    ・消耗品SQLDataset.Designer1.vb.dll

    があります。

    子の中のファイルは何か役にはたたないでしょうか?

    2011年7月6日 5:49
  • 再度確認ですが、職員テーブル以外は表示できているのでしょうか?

    もし全てのテーブルが表示できなのであれば、64bitの問題や、OLEDBの問題かもしれません。(エラーが出ていないのが引っ掛かりますが・・・)

    (参考)
    64bitOSで動作するアプリ作成の方法
    http://social.msdn.microsoft.com/Forums/ja-JP/csharpexpressja/thread/0d2a3783-1263-4c9e-bc59-5fa15321d3dd/

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2011年7月6日 7:38
    モデレータ
  • 対象の Access データベース ファイルは消耗品と職員で合わせて一つなのでしょうか?それとも、それぞれに一つずつあるのでしょうか?
    また、実際に Access で開いて最新の職員データが入っていることを確認したデータベース ファイル以外に、同じようなファイルが他に存在していないでしょうか?
    そもそも、件のアプリケーションは正しく動作できているけれども、肝心のデータとして別のものを読み込んでいて、データが空っぽという可能性もあると思います。
    別のデータベース ファイルとか、実際に読み込んでいると思われるデータベース ファイルとかに、空の職員データが混じっていたりしませんか?

    ソースがないとしても ILSpy のようなツールを使えばソース コードを生成することはできます。(残念ながら C# のみですが)
    ソースを読みこなすスキルは必須ですが、アプリケーションがどういう動作をして、その結果職員データが空っぽになっているかを追うことはできます。

    無償の逆コンパイラ「ILSpy」を利用するには?[C#] - @IT
    http://www.atmarkit.co.jp/fdotnet/dotnettips/1055ilspy/ilspy.html

    # 本当は前任者なり上司なりを捕まえて、根掘り葉掘り聞きだすのが筋なのでしょうが、上司は中身をまるで把握していないし、前任者は手の届かないところにいるということなのでしょうか。
    • 回答としてマーク 山本春海 2011年8月2日 5:39
    2011年7月6日 8:37
  • trapemiyaさん

    >再度確認ですが、職員テーブル以外は表示できているのでしょうか?

    はい、職員テーブルだけが表示されません。後媒体テーブル(CDやDVDなど)、在庫数テーブル、履歴テーブル、用途テーブル(保存用か送付用かなど)はすべて表示できますし

    在庫数も計算はあってます。職員テーブルのみAccessではデータがありますが、VBのフォームには表示されません。

    ただ、職員テーブルだけは、サーバーから異動があるたびにODBCで更新するようにはなっています。現在ちゃんと更新されたデータがAccessにあります。

    totojoさん

    AccessDBは1つのファイルです。全部併せて「消耗品DB」という名前です。同じようなDBはないと思います。exeファイルを保存しているフォルダにAccessDBを保存してますが

    ほかにはありません。

    前任者の方が辞めたので私が雇われたのですが、一応マニュアルはあるものの、画面ショットと、冒頭に記述している内容のものだけです。

    前任者の方が使用していたと思われるノートを起動して、VBやVS関係のフォルダを探していますが、ソースファイル(プロジェクトファイル)が今のところ見あたらないのです。

    DLLはたくさんありますが。どうにかならないんでしょうか?

    お手数かけますが、よろしくお願いいたします。

    2011年7月6日 23:45
  • > DLLはたくさんありますが。どうにかならないんでしょうか?

    なので、それをtotojoさんのおっしゃっている「ILSpy」で
    見てみれば、なにかわかるんじゃないでしょうか。
    (今回の場合はexeをみることになりそうですが)

    # Refletorは全部有償になってたんですね。知らなかった。

    今後もメンテするならソースは絶対に必要ですし、
    今回の不具合の検証も兼ねて新たにソースを用意するつもりで
    腹をくくってやったほうがいいかもしれません。
    不具合見つけても、ソース直した後に再コンパイルが必要でしょうし。
    とりあえずC#になってしまいますけど、たしかVB.NETに変換するツールもあると思います。

    現象からだけ推測するなら、職員データの検索条件が
    あっていないと思うので、それはどういうSQL文でAccessDBから
    持ってきているかわからないと解決しないように思います。

    2011年7月7日 0:42