diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs
index 31f693fc76..8f20ffb37a 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportWizard/WizardPanels/ResultPanel.cs
@@ -2,6 +2,7 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
+using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Drawing;
@@ -11,8 +12,10 @@ using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
+using ICSharpCode.Data.Core.Enums;
using ICSharpCode.Data.Core.Interfaces;
using ICSharpCode.Reports.Core;
+using ICSharpCode.Reports.Core.Project.BaseClasses;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.Reports.Addin.ReportWizard
@@ -55,10 +58,6 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
private DataSet FillGrid()
{
- this.connectionObject = ConnectionObject.CreateInstance(this.model.ReportSettings.ConnectionString,
- System.Data.Common.DbProviderFactories.GetFactory("System.Data.OleDb"));
-
-// this.txtSqlString.Text = String.Empty;
SqlQueryChecker.Check(model.ReportSettings.CommandType,
model.ReportSettings.CommandText);
@@ -67,15 +66,15 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
this.txtSqlString.Text = model.ReportSettings.CommandText;
switch (model.ReportSettings.CommandType) {
case CommandType.Text:
+
ITable t = reportStructure.IDatabaseObjectBase as ITable;
- connectionObject.QueryString = model.ReportSettings.CommandText;
- var d = new SqlDataAccessStrategy(model.ReportSettings,connectionObject);
- dataSet = d.ReadData();
+ this.connectionObject = CreateConnection (t);
+ var dataAccess = new SqlDataAccessStrategy(model.ReportSettings,connectionObject);
+ dataSet = dataAccess.ReadData();
dataSet.Tables[0].TableName = t.Name;
break;
case CommandType.StoredProcedure:
-
-// var vv = reportStructure.IDatabaseObjectBase;
+
dataSet = DatasetFromStoredProcedure();
break;
case CommandType.TableDirect:
@@ -111,63 +110,79 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
return dataSet;
}
- /*
- private DataSet BuildFromSqlString ()
+ ConnectionObject CreateConnection(IDatabaseObjectBase t)
{
- DbDataAdapter adapter = null;
- try {
- adapter = this.BuildAdapter();
- DataSet dataSet = ResultPanel.CreateDataSet();
- adapter.Fill(dataSet);
- return dataSet;
- } finally {
- if (adapter.SelectCommand.Connection.State == ConnectionState.Open) {
- adapter.SelectCommand.Connection.Close();
- }
- }
+
+ var conobj = ConnectionObject.CreateInstance(this.model.ReportSettings.ConnectionString,
+ System.Data.Common.DbProviderFactories.GetFactory("System.Data.OleDb"));
+ conobj.QueryString = model.ReportSettings.CommandText;
+ return conobj;
+
}
- */
DataSet DatasetFromStoredProcedure()
{
- DbDataAdapter adapter = null;
- try {
- DataSet dataSet = ResultPanel.CreateDataSet();
- IProcedure tt = reportStructure.IDatabaseObjectBase as IProcedure;
- var paramCollection = CheckParameters(tt);
+ IProcedure procedure = reportStructure.IDatabaseObjectBase as IProcedure;
+ this.connectionObject = CreateConnection(procedure);
+
+ DataSet dataSet = ResultPanel.CreateDataSet();
+
+ var paramCollection = CheckParameters(procedure);
+
+
+ if (paramCollection.Count > 0) {
- if (paramCollection.Count > 0) {
-
- } else {
- adapter = this.BuildAdapter();
-
- }
+ FillParameters(paramCollection);
+ model.ReportSettings.ParameterCollection.AddRange(paramCollection);
+ reportStructure.SqlQueryParameters.AddRange(paramCollection);
- adapter.Fill(dataSet);
- return dataSet;
- } finally {
- if (adapter.SelectCommand.Connection.State == ConnectionState.Open) {
- adapter.SelectCommand.Connection.Close();
+ }
+
+ var dataAccess = new SqlDataAccessStrategy(model.ReportSettings,connectionObject);
+ dataSet = dataAccess.ReadData();
+ dataSet.Tables[0].TableName = procedure.Name;
+
+ return dataSet;
+ }
+
+
+
+ bool FillParameters(ParameterCollection paramCollection)
+ {
+ using (var p = new ParameterDialog(paramCollection))
+ {
+ p.ShowDialog();
+ if(p.DialogResult == DialogResult.OK)
+ {
+
+ }
}
- }
+ return true;
}
+
ParameterCollection CheckParameters(IProcedure procedure)
{
ParameterCollection col = new ParameterCollection();
+ SqlParameter par = null;
+ foreach (var element in procedure.Items) {
-// foreach (var element in procedure.Items) {
-// Console.WriteLine("{0} - {1}",element.Name,element.DataType);
-//
-// SqlParameter par = new SqlParameter(element.Name,element.DataType,"",element.ParameterMode);
-//
-// p.Add(par);
-//
-// }
+ DbType dbType = TypeHelpers.DbTypeFromStringRepresenation(element.DataType);
+ par = new SqlParameter(element.Name,dbType,"",ParameterDirection.Input);
+
+ if (element.ParameterMode == ParameterMode.In) {
+ par.ParameterDirection = ParameterDirection.Input;
+
+ } else if (element.ParameterMode == ParameterMode. InOut){
+ par.ParameterDirection = ParameterDirection.InputOutput;
+ }
+ col.Add(par);
+ }
return col;
}
+
private static DataSet CreateDataSet()
{
DataSet dataSet = new DataSet();
@@ -175,89 +190,7 @@ namespace ICSharpCode.Reports.Addin.ReportWizard
return dataSet;
}
-
- private DbDataAdapter BuildAdapter () {
- DbDataAdapter adapter = this.connectionObject.ProviderFactory.CreateDataAdapter();
- adapter.SelectCommand = (DbCommand)this.BuildCommand();
- return adapter;
- }
-
- private IDbCommand BuildCommand ()
- {
- if (this.connectionObject != null) {
- IDbCommand command = this.connectionObject.Connection.CreateCommand();
- command.CommandText = this.model.ReportSettings.CommandText;
- command.CommandType = this.model.ReportSettings.CommandType;
- return command;
- }
- throw new MissingDataSourceException();
- }
- /*
- private DataSet ExecuteStoredProc ()
- {
-
- DbDataAdapter adapter = null;
- try {
- adapter = this.BuildAdapter();
- DataSet dataSet = ResultPanel.CreateDataSet();
- adapter.Fill(dataSet);
- return dataSet;
-
- }finally {
- if (adapter.SelectCommand.Connection.State == ConnectionState.Open) {
- adapter.SelectCommand.Connection.Close();
- }
- }
- }
- */
- /*
- private DataSet ExecuteStoredProc (SharpQueryProcedure procedure)
- {
-
- SharpQuerySchemaClassCollection tmp = procedure.GetSchemaParameters();
- this.sqlParamsCollection = new ParameterCollection();
- SqlParameterConverter converter = new SqlParameterConverter();
-
- if (converter.CanConvertFrom(typeof(SharpQuerySchemaClassCollection))) {
- if (converter.CanConvertTo(null,typeof(ParameterCollection))){
- sqlParamsCollection = (ParameterCollection)converter.ConvertTo(null,
- CultureInfo.InstalledUICulture,
- tmp,
- typeof(ParameterCollection));
- }
- }
-
- if (sqlParamsCollection.Count > 0){
- using (ParameterDialog inputform = new ParameterDialog(sqlParamsCollection)) {
- if ( inputform.ShowDialog() != DialogResult.OK ){
- return null;
- }
- else
- {
- IDbCommand command = this.BuildCommand();
- DbDataAdapter adapter = this.BuildAdapter();
- DataSet dataSet = ResultPanel.CreateDataSet();
- try {
- SqlDataAccessStrategy.BuildQueryParameters(command,sqlParamsCollection);
- adapter.SelectCommand = (DbCommand)command;
-
- adapter.Fill (dataSet);
- return dataSet;
- } catch (Exception e) {
- MessageService.ShowError(e.Message);
- } finally {
- if (adapter.SelectCommand.Connection.State == ConnectionState.Open) {
- adapter.SelectCommand.Connection.Close();
- }
- }
- }
- }
- }
- return null;
- }
-
-*/
#endregion
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
index 264bb5786e..b8625d0a3f 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
@@ -77,6 +77,7 @@
Project\Configuration\GlobalAssemblyInfo.cs
+
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardFormatter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardFormatter.cs
index 0a3411dfc0..5e58f993aa 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardFormatter.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/Printing/StandardFormatter.cs
@@ -3,6 +3,7 @@
using System;
using System.Globalization;
+using ICSharpCode.Reports.Core.Project.BaseClasses;
///
/// This Class handles the formatting of Output Values depending on there
@@ -17,18 +18,11 @@ namespace ICSharpCode.Reports.Core.BaseClasses.Printing
internal static class StandardFormatter
{
- private static TypeCode TypeCodeFromString (string type) {
- if (String.IsNullOrEmpty(type)) {
- throw new ArgumentNullException("type");
- }
- return Type.GetTypeCode( Type.GetType(type));
- }
-
public static string FormatOutput(string valueToFormat,string format,
string dataType, string nullValue )
{
- TypeCode typeCode = TypeCodeFromString(dataType);
+ TypeCode typeCode = TypeHelpers.TypeCodeFromString(dataType);
return StandardFormatter.FormatItem(valueToFormat,format,
typeCode,nullValue);
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SqlParameter.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SqlParameter.cs
index d75552f965..49f2eb2bfe 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SqlParameter.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/SqlParameter.cs
@@ -19,9 +19,7 @@ namespace ICSharpCode.Reports.Core
///
public class SqlParameter : BasicParameter {
- DbType dataType;
-
- ParameterDirection parameterDirection = ParameterDirection.InputOutput;
+ // ParameterDirection parameterDirection = ParameterDirection.InputOutput;
#region Constructor
public SqlParameter ()
@@ -50,7 +48,7 @@ namespace ICSharpCode.Reports.Core
ParameterDirection parameterDirection):base(parameterName,parameterValue)
{
this.DataType = dataType;
- this.parameterDirection = parameterDirection;
+ this.ParameterDirection = parameterDirection;
}
#endregion
@@ -62,20 +60,15 @@ namespace ICSharpCode.Reports.Core
/// DbType
///
///
- public DbType DataType {
- get {return dataType;}
- set {dataType = value;}
- }
+ public DbType DataType {get;set;}
+
-
///
/// Direction of Parameter
/// ParameterDirection
///
- public ParameterDirection ParameterDirection {
- get {return parameterDirection;}
- set {parameterDirection = value;}
- }
+ public ParameterDirection ParameterDirection {get;set;}
+
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/TypeHelpers.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/TypeHelpers.cs
new file mode 100644
index 0000000000..a1c67a2cc9
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseClasses/TypeHelpers.cs
@@ -0,0 +1,73 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 16.01.2011
+ * Time: 17:46
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Data;
+
+namespace ICSharpCode.Reports.Core.Project.BaseClasses
+{
+ ///
+ /// Description of .
+ ///
+ public class TypeHelpers
+ {
+ //http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/16e981bd-4fa1-4ad2-9f45-5f434489e1e2/
+
+ public static DbType DbTypeFromStringRepresenation(string type)
+ {
+ switch (type.ToLower())
+ {
+ case "int16":
+ return DbType.Int16;
+ case "int32":
+ return DbType.Int32;
+ case "int64":
+ return DbType.Int64;
+ case "uint16":
+ return DbType.UInt16;
+ case "uint32":
+ return DbType.UInt32;
+ case "uint64":
+ return DbType.UInt64;
+ case "single":
+ return DbType.Single;
+ case "double":
+ return DbType.Double;
+ case "decimal":
+ return DbType.Decimal;
+ case "datetime" :
+ return DbType.DateTime;
+ case "datetime2" :
+ return DbType.DateTime2;
+ case "boolean" :
+ return DbType.Boolean;
+ case "nvarchar":
+ return DbType.String;
+ case "varchar":
+ return DbType.AnsiString;
+ case "binary":
+ return DbType.Binary;
+ case "currency":
+ return DbType.Currency;
+ case "guid":
+ return DbType.Guid;
+ case "xml":
+ return DbType.Xml;
+ default:
+ return DbType.Object;
+ }
+ }
+
+ public static TypeCode TypeCodeFromString (string type) {
+ if (String.IsNullOrEmpty(type)) {
+ throw new ArgumentNullException("type");
+ }
+ return Type.GetTypeCode( Type.GetType(type));
+ }
+ }
+}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/SqlDataAccess.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/SqlDataAccess.cs
index 750882841d..0dacb10733 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/SqlDataAccess.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/DataManager/SqlDataAccess.cs
@@ -86,7 +86,7 @@ namespace ICSharpCode.Reports.Core
}
- public static void BuildQueryParameters (IDbCommand cmd,
+ private static void BuildQueryParameters (IDbCommand cmd,
ParameterCollection parameterCollection)
{
if (parameterCollection != null && parameterCollection.Count > 0) {
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportParameters.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportParameters.cs
index c38bcaccfd..ef09c03dd5 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportParameters.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/ReportParameters.cs
@@ -11,8 +11,11 @@ using System;
/// created by - Forstmeier Peter
/// created on - 17.11.2005 22:41:26
///
-namespace ICSharpCode.Reports.Core {
- public class ReportParameters : object {
+namespace ICSharpCode.Reports.Core
+{
+
+ public class ReportParameters
+ {
private ConnectionObject connectionObject;
private ParameterCollection sqlParameters;