Для облегчения взаимопонимания отправил пример на суппорт [#EJC-461665].
доб.: странно, но Ticket ID система не узнала, присвоила новый [#EKB-502706].
Формирование словаря. RegData
Формирование словаря. RegData
Здравствуйте.
Ответ техподдержки поразил..
В примере был код:
А вот ответ:
[quote="""Edward Pat (support@stimulsoft.com)"]Да, проблема с этим методом регистрации есть. Попробуйте так:
StiReport report = new StiReport();
StiSqlDatabase db = new StiSqlDatabase("MyConnection", @"Password=;Persist Security Info=False;Data Source=.\SqlExpress;Integrated Security=False;Initial Catalog=NORTHWIN;User ID=sa");
StiSqlSource mySource = new StiSqlSource("MyConnection", "MySource", "MySource", "exec CustOrderHist 'ALFKI'");
report.Dictionary.Databases.Add(db);
report.Dictionary.DataSources.Add(mySource);
mySource.SynchronizeColumns();
mySource.Parameters.Add(new StiDataParameter("@CustID", "\"ALFKI\"", (int)SqlDbType.VarChar , 5));
mySource.SqlCommand = "exec CustOrderHist @CustID";
[/quote]
Непонятно, почему БД NORTHWIND, запуск процедуры, какой-то параметр.. База же есть в проекте.
Не указано, где задавать имя-алиас для источника.
Попытки изменить этот код под себя привели лишь к нерабочему варианту. Пример, дополненный этим вариантом, отправил на суппорт.
Хотелось бы видеть рабочий код в данном примере.
Спасибо.
Ответ техподдержки поразил..
В примере был код:
Код: Выделить всё
string dbPath = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "StiDicErrorSampleDatabase.mdf");
StiReport report = new StiReport();
SqlConnection conn = new SqlConnection(string.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;User Instance=True", dbPath));
string name = "Это имя";
string alias = "Это алиас";
report.RegData(name, alias, conn);
StiSqlSource sss = new StiSqlSource(name, "Table1", "Table1", "SELECT * FROM [Table1]");
report.Dictionary.DataSources.Add(sss);
sss.SynchronizeColumns();
report.Design();
[quote="""Edward Pat (support@stimulsoft.com)"]Да, проблема с этим методом регистрации есть. Попробуйте так:
StiReport report = new StiReport();
StiSqlDatabase db = new StiSqlDatabase("MyConnection", @"Password=;Persist Security Info=False;Data Source=.\SqlExpress;Integrated Security=False;Initial Catalog=NORTHWIN;User ID=sa");
StiSqlSource mySource = new StiSqlSource("MyConnection", "MySource", "MySource", "exec CustOrderHist 'ALFKI'");
report.Dictionary.Databases.Add(db);
report.Dictionary.DataSources.Add(mySource);
mySource.SynchronizeColumns();
mySource.Parameters.Add(new StiDataParameter("@CustID", "\"ALFKI\"", (int)SqlDbType.VarChar , 5));
mySource.SqlCommand = "exec CustOrderHist @CustID";
[/quote]
Непонятно, почему БД NORTHWIND, запуск процедуры, какой-то параметр.. База же есть в проекте.
Не указано, где задавать имя-алиас для источника.
Попытки изменить этот код под себя привели лишь к нерабочему варианту. Пример, дополненный этим вариантом, отправил на суппорт.
Хотелось бы видеть рабочий код в данном примере.
Спасибо.
-
- Сообщения: 264
- Зарегистрирован: 12 ноя 2007, 08:16
Формирование словаря. RegData
Здравстуйте.
Исправить проблему метода регистрации словаря мы сейчас не можем. Но добавили опцию которая поможет вашей проблеме.
StiOptions.Dictionary.NotIdenticalNameAndAliasAtRegistrationOfNewData = true;
Патч будет доступен в следующем пререлиз билде от 24 августа 2009 года.
Спасибо.
Исправить проблему метода регистрации словаря мы сейчас не можем. Но добавили опцию которая поможет вашей проблеме.
StiOptions.Dictionary.NotIdenticalNameAndAliasAtRegistrationOfNewData = true;
Патч будет доступен в следующем пререлиз билде от 24 августа 2009 года.
Спасибо.
Формирование словаря. RegData
Здравствуйте,
Извините за неточный ответ.
Вот этот код:
приведен для тестовой базы NorthWind в SQL Server. Это вариант, который получит колонки и для хранимой процедуры и присвоит Alias для соединения с БД.
В Вашем случае достаточен вот этот код:
Спасибо.
Извините за неточный ответ.
Вот этот код:
Код: Выделить всё
StiReport report = new StiReport();
StiSqlDatabase db = new StiSqlDatabase("MyConnection","My Alias", @"Password=;Persist Security Info=False;Data Source=.\SqlExpress;Integrated Security=False;Initial Catalog=NORTHWIN;User ID=sa");
StiSqlSource mySource = new StiSqlSource("MyConnection", "MySource", "MySource", "exec CustOrderHist 'ALFKI'");
report.Dictionary.Databases.Add(db);
report.Dictionary.DataSources.Add(mySource);
report.Dictionary.Synchronize();
mySource.SynchronizeColumns();
mySource.Parameters.Add(new StiDataParameter("@CustID", "\"ALFKI\"", (int)SqlDbType.VarChar , 5));
mySource.SqlCommand = "exec CustOrderHist @CustID";
В Вашем случае достаточен вот этот код:
Код: Выделить всё
string name = "MyConnection";
string alias = "MyAlias";
StiSqlDatabase db = new StiSqlDatabase(name, alias, string.Format(@"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;User Instance=True", dbPath));
StiSqlSource mySource = new StiSqlSource(name, "Table1","Table1", "SELECT * FROM Table1");
report.Dictionary.Databases.Add(db);
report.Dictionary.DataSources.Add(mySource);
report.Dictionary.Synchronize();
mySource.SynchronizeColumns();
Формирование словаря. RegData
"Смешались в кучу кони, люди"
Здравствуйте.
Переименовать не выходит.
Убрал код "StiOptions.Dictionary.NotIdenticalNameAndAliasAtRegistrationOfNewData = true;" - все стало в норме :biggrin: Тестовый пример работает.
Посмотрим, что будет на рабочем проекте.
Спасибо!
Здравствуйте.
Скачал последний билд, проверил.. Оба варианта из примера теперь работают, конечно.. Вот только в первом случае видно лишь имя, а во втором лишь алиас (ощущение, что имя просто подменяется на него). Нам же нужны и имя и алиас. Смысл алиаса какраз в том, чтобы можно было включить StiOptions.Dictionary.ShowOnlyAliasForDatabase и спокойно переименовывать источник данных. А так, как было имя, так и осталось - никакой разницы с тем, что было без NotIdenticalNameAndAliasAtRegistrationOfNewData без использования алиасов.Anton писал(а):Исправить проблему метода регистрации словаря мы сейчас не можем. Но добавили опцию которая поможет вашей проблеме.
StiOptions.Dictionary.NotIdenticalNameAndAliasAtRegistrationOfNewData = true;
Переименовать не выходит.
Попытался - получил InvalidCastException (Unable to cast object of type 'System.Collections.Generic.List`1[Stimulsoft.Report.Dictionary.StiDataSource]' to type 'System.Collections.ArrayList'.)Edward писал(а):В Вашем случае достаточен вот этот код:
Убрал код "StiOptions.Dictionary.NotIdenticalNameAndAliasAtRegistrationOfNewData = true;" - все стало в норме :biggrin: Тестовый пример работает.
Посмотрим, что будет на рабочем проекте.
Спасибо!