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

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

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

Re[4]: 新規にデータプロバイダを組み込みたいしたい


(過去ログ 24 を表示中)

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

■10603 / inTopicNo.1)  新規にデータプロバイダを組み込みたいしたい
  
□投稿者/ チャンタ (1回)-(2007/11/22(Thu) 10:11:03)

分類:[VB.NET/VB2005] 

開発環境:VS2005 ProfessionalEdition
使用言語:Visual Basic

表題の件ですが、DBをfirebirdで業務アプリを開発しています。
そこでデータプロバイダとしてFirebird ADO.NET Data Providerを使用しています。

フォーム内でのデータ操作はコード記述で使用できるのですが
帳票作成等でデータセット(*.xsd)作成時にデータプロバイダの
選択画面があるのですがそこにFirebird ADO.NET Data Providerが選択できないため
データセットの作成ができずに困っています。
Firebird ADO.NET Data Providerも使えるようにしたいのです。

なにか方法がありましたら教えて下さい。

引用返信 編集キー/
■10605 / inTopicNo.2)  Re[1]: 新規にデータプロバイダを組み込みたいしたい
□投稿者/ 魔界の仮面弁士 (526回)-(2007/11/22(Thu) 10:55:00)
No10603 (チャンタ さん) に返信
> 帳票作成等でデータセット(*.xsd)作成時にデータプロバイダの
> 選択画面があるのですがそこにFirebird ADO.NET Data Providerが選択できないため
> データセットの作成ができずに困っています。
非標準のマネージプロバイダの場合は、型付 DataSet (Typed DataSet) の生成機能を有していない事が多いかと。
生の DataSet (Untyped DataSet) ではまずいのでしょうか?

# 必要であれば、partial class を使って、自分で型付にするという手もありますが…メンテナンスが面倒かな。


> Firebird ADO.NET Data Providerも使えるようにしたいのです。
たとえば Oracle 社の ODP.NET では、TableAdapter の生成機能こそありませんが、
型付 DataSet を作ることはできるようになっています。
Firebird の場合は、そのような機能は用意されていませんでしたか?

http://www.firebirdsql.org/index.php?op=devel&sub=netprovider&id=dotnetff200411
を見る限りでは、
> Added a new DataSet generator for the FbDataAdapter component.
> ★It allows to generate typed and untyped DataSets.★
> The generated Typed Dataset will be added to the active Visual Studio project.
> Supported Visual Studio versions are Visual Studio 2003/2005 and Visual C# Express.
という表記もあるようですが。
引用返信 編集キー/
■10638 / inTopicNo.3)  Re[2]: 新規にデータプロバイダを組み込みたいしたい
□投稿者/ チャンタ (2回)-(2007/11/22(Thu) 21:50:19)
No10605 (魔界の仮面弁士 さん) に返信
> http://www.firebirdsql.org/index.php?op=devel&sub=netprovider&id=dotnetff200411
> を見る限りでは、
>>Added a new DataSet generator for the FbDataAdapter component.
>>★It allows to generate typed and untyped DataSets.★
>>The generated Typed Dataset will be added to the active Visual Studio project.
>>Supported Visual Studio versions are Visual Studio 2003/2005 and Visual C# Express.
> という表記もあるようですが。

どうやって行うのかが記述されていないので困っています。

http://www.firebirdsql.org/index.php?op=devel&sub=netprovider&id=faq#9
に以下の文を見つけました。
以下のコードを記述すればDataSetの生成ができますと解釈したのですが
1:どこに記述すればよいのか
2:VisualBasic言語ではないがどうしたものか
3:StreamWriter等通常の環境では定義されていないオブジェクト?が
  あるがどう対処したらよいのか
と3点がわからず困っています。
なにかわかれば教えて下さい。
−−−−
9. Can i generate type datasets at design time using the FbDataAdapter component ?

No, design time support is limited to the FbConnection and FbCommand components.

You can generate typed datasets by code using the TypedDataSetGenerator .NET class.

FbConnection connection = new FbConnection(connectionString);

DataSet employees = new DataSet("Employees");
FbCommand command = new FbCommand("select * from employee", connection);
FbDataAdapter adapter = new FbDataAdapter(command);
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;

adapter.Fill(employees, "Employees");

// Generate the employee TypedDataSet
string fileName = @"d:\employee.cs";

StreamWriter tw = new StreamWriter(new FileStream(fileName,
FileMode.Create,
FileAccess.Write));

CodeNamespace cn = new CodeNamespace("employees");
CSharpCodeProvider cs = new CSharpCodeProvider();

System.Data.Design.TypedDataSetGenerator.Generate(dataSet, codeNamespace, csharpCodeProvider);

cg.GenerateCodeFromNamespace(cn, tw, null);

tw.Flush();
tw.Close();

employees.WriteXmlSchema(@"d:\employee.xsd");

connection.Close();
−−−−

引用返信 編集キー/
■10641 / inTopicNo.4)  Re[3]: 新規にデータプロバイダを組み込みたいしたい
□投稿者/ 魔界の仮面弁士 (529回)-(2007/11/22(Thu) 22:32:42)
No10638 (チャンタ さん) に返信
> 1:どこに記述すればよいのか
System.Data.Design.TypedDataSetGenerator.Generate 自体は、
現在のプロジェクト内に記述するための物では無いと思いますよ。
.NET Framework SDK 付属の SDK\v2.0\Bin\xsd.exe ツールのような感じで利用するものかと。

現在のプロジェクトとは別に、「型付 DataSet を作るためのプログラム」として作成し、
それによって、型定義(*.xsd) や クラスコード(*.vb や *.cs など)のファイルを作成し、
そこで生成されたファイルを、現在のプロジェクトに組み込んで利用してみてください。


> 2:VisualBasic言語ではないがどうしたものか
「コードジェネレータの指定方法」という意味であれば、違いとしては
 Microsoft.VisualBasic.VBCodeProvider クラス

 Microsoft.CSharp.CSharpCodeProvider クラス
の使い分けぐらいで済むような気がします。


> 3:StreamWriter等通常の環境では定義されていないオブジェクト?が
>   あるがどう対処したらよいのか
各クラスの『名前空間』を指定してください。

たとえば、StreamWriter クラスをヘルプで調べると、
http://msdn2.microsoft.com/ja-jp/library/System.IO.StreamWriter.aspx
》名前空間: System.IO
》アセンブリ: mscorlib (mscorlib.dll 内)
と書かれていますから、実際にこれを使うためには、
System.IO.StreamWriter という名前を書けば良い事がわかります。

また、いちいち System.IO と書くのが面倒なら、VB では「Imports」(C# では「using」)を使うことで、
名前空間を省略できるようになります。

なお、名前空間を指定しても利用できない場合は、『参照設定』が漏れているのかも知れません。
そのクラスが必要としている「アセンブリ」を、参照設定に加えてみてください。
引用返信 編集キー/
■10726 / inTopicNo.5)  Re[4]: 新規にデータプロバイダを組み込みたいしたい
□投稿者/ チャンタ (3回)-(2007/11/24(Sat) 18:03:24)
No10641 (魔界の仮面弁士 さん) に返信
以下のコード通りたった数行で解決できました。
空のDataset作成で十分対処できました。
どうもあれこれ考えすぎたみたいです。


Private rep As CrystalReport2
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
rep = New CrystalReport2()
Dim FbDs As DataSet = New DataSet
With FbDataAdapter1
.SelectCommand.Connection = FbConnection1
.SelectCommand.CommandText = " SELECT * FROM TABLE1 "
.Fill(FbDs, "DataTable1")
End With

rep.SetDataSource(FbDs)
CrystalReportViewer1.ReportSource = rep
 End Sub
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -