• ベストアンサー

選択したフィールドだけのCSVを出力

ACCESS2003とSQLserver2008を使っています。 エンドユーザが画面でフィールド名を選択して、必要なフィールドだけ のCSV(エクセル)を出力したいのですが、そんなツールはないでしょうか? 作り込むとしたら、ストアドでSELECT文のフィールド名やテーブル名に 変数を使うことは可能でしょうか? (試したらフィールド名自体が件数分表示されました、テーブルは エラーになりました) また、どこかにサンプルなどはないでしょうか?

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

  • ベストアンサー
  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

http://www.sint.co.jp/products/siob/ob/re/requirements.html#requirements02 SQL Serverでの実績はありませんが、Oracleと接続しての実績です。 あるテーブルのデータを表示する際、任意フィールドを絞りこみ表示させることができます。さらにその結果をExcelに直接出力すること もできます。

SEsyo
質問者

お礼

ありがとうございます、お値打ちなツールなので、試用版で試してみます。

SEsyo
質問者

補足

トライアルで試してみました。 確かにフィールドを絞りこんだり、レコードの絞り込みも希望通りの機能でした。 ただ、一度設定した絞り込みの内容を名前をつけて保存できたり、 テーブルごとに覚えておいて、次回のデフォルトとして表示される 機能が欲しいのですが、付いているのでしょうか? 多機能で効率がいいツールですので開発用に導入を検討してみますが、 エンドユーザ用にこの機能だけに特化した様な(安価で)シンプルな ツールはないでしょうか? 

その他の回答 (3)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.4

sqlserverの接続例です。 http://www37.atwiki.jp/kuronekosoft/pages/14.html デモです。 http://kuronekosoft.nobody.jp/tutorial/s_tutorial01.html 黒猫 Studio はSELECT文を作る必要がありますから、ちょっと敷居が 高いですかね。

SEsyo
質問者

お礼

ありがとうございました、デモを見たのですが エンドユーザには無理と判断し没としますが、 開発担当者用で検討してみます。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.3

ツールならフリーの http://www.vector.co.jp/soft/winnt/business/se427666.html とか、有償でodbc経由になりますが http://www.est.co.jp/skylink/ とか

SEsyo
質問者

お礼

ありがとうございます、フリーの黒猫をDLしたのですが接続できませんでした。 事前に何らかの作業が必要なんでしょうか? (OLE DB プロバイダとかODBCとかありますがスキル不足で???状態です)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

ストアドのサンプルを示しておきましょうか。動的クエリを使います。 CREATE PROCEDURE ap_DataExtractor (@TABLE nvarchar(128),@FIELDLIST nvarchar(max)) AS BEGIN SET NOCOUNT ON EXEC ('SELECT '+@FIELDLIST+' FROM '+@TABLE) END EXEC ap_DataExtractor 'TABLE1','Field2,Field5,Field7' でも、これだと正しくないテーブル、フィールドを指定するとエラーになります。 また、いわゆる不正なパラメータを渡されるといろいろできてしまうので、 通常は渡されたパラメータを検証します(詳しくは説明しません) CREATE PROCEDURE ap_DataExtractor (@TABLE nvarchar(128),@FIELDLIST nvarchar(max)) AS BEGIN SET NOCOUNT ON --有効なテーブルか IF (object_id(@TABLE) IS NULL) RETURN 99 --有効なフィールドか DECLARE @FIELDXML xml = CONVERT(xml,'<F>'+REPLACE(@FIELDLIST,',','</F><F>')+'</F>') DECLARE @NEWFIELDLIST nvarchar(max) SELECT @NEWFIELDLIST=ISNULL(@NEWFIELDLIST+',','')+c.name FROM sys.columns c INNER JOIN (SELECT x.COL.value('./text()[1]','nvarchar(128)') FIELD FROM @FIELDXML.nodes('/F') as x(COL)) f ON f.FIELD=c.name WHERE object_id=object_id(@TABLE) IF (@NEWFIELDLIST IS NULL) RETURN 99 --クエリ実行 EXEC ('SELECT '+@NEWFIELDLIST+' FROM '+@TABLE) END GO 本当ならば、このストアドをbcpユーティリティで実行するとそのままCSVが出来上がって一番楽なのですが、 リンクページの理由によりお勧めできません。 別の方法でCSV化してください。 http://support.microsoft.com/kb/952734/ja (2008でも直っていません)

SEsyo
質問者

お礼

サンプルありがとうございます、解析して勉強してみます。

関連するQ&A