Próbuję napisać aplikację C#, która pobrałaby z bazy danych definicję wydruku i utworzyła z tego plik .rpt Crystal Reports, w którym następnie chciałbym sprawdzić programistycznie kilka rzeczy.
select RpF2_Nazwa, RpD2_Definicja from cdn.RptDefinicje2
join cdn.RptFormaty2 on RpF2_RpWId = RpD2_RpWId and RpF2_Id = RpD2_RpFId
where RpD2_RpWId = 17 and RpD2_RpFId = 2
ale z racji tego, że pliki są podzielone na częsci, nie wiem jak to złożyć od strony C# w całość.
Czy ktoś coś może kiedyś w tym temacie robił?
@ospi
Cześć, Podgrzeje trochę temat. Czy udało Ci się osiągnąć export tego pliku z bazy?
Walczę z czymś podobnym tylko przez PHP i też się zastanawiam jak to połączyć
CRAXDRT.Application crxApp = new CRAXDRT.Application();
CRAXDRT.Report crxReport = new CRAXDRT.Report();
crxReport = crxApp.OpenReport(@"C:\path\report.RPT", null);
crxReport.ParameterFields.GetItemByName("GIDNumer", "EtykietaTowaru").AddCurrentValue(DocumentPositionContext.Position.Article.Id.ToInt32());
foreach (CRAXDDRT.DatabaseTable crxdt in crxReport.Database.Tables)
{
crxdt.ConnectionProperties.DeleteAll();
crxdt.ConnectionProperties.Add("DSN", @"XL DSN");
crxdt.ConnectionProperties.Add("Database", "CDNXL_NAME");
crxdt.ConnectionProperties.Add("Password", @"password");
crxdt.ConnectionProperties.Add("User Id", @"user");
}
Api.Toast.ShowSuccess((sender as IMobButton).Name.ToString());
if ((sender as IMobButton).Name.ToString() == "Print1")
{
crxReport.SelectPrinter("plik_sterownika_drukarki", "nazwa_drukarki", "port_drukarki");
crxReport.PrintOut(false, 1, true, 1, 1);
}
if ((sender as IMobButton).Name.ToString() == "Print2")
{
crxReport.SelectPrinter("plik_sterownika_drukarki", "nazwa_drukarki", "port_drukarki");
crxReport.PrintOut(false, 1, true, 1, 1);
}
Plik raportu osadzam gdzieś na dysku. definiuje połączenie do bazy danych (musi być zdefiniowany poprawnie XL DSN) a potem wskazuję drukarkę gdzie można to wydrukować.
1. Definicja raportu znajduje się w pliku a nie w systemie
2. Do eksportu wyników można użyć PDF Creator i w skazać go jako drukarkę.
Cześć,
podbijam temat. Problem tak naprawdę tkwi w sposobie zapisu pliku RPT w kolumnie RpD2_Definicja. Po odczycie wartości dowolną aplikacją nie wiadomo, jak tą definicję przekonwertować, aby zapisać plik RPT na dysku. Na pewno nie jest to BASE64 jak w DaneBinarne, nie jest to też plain text.