Wypowiedzi
-
Witam
Dzięki za zainteresowanie i chęć pomocy. Dzisiaj odinstalowałem stare runtime-y i zainstalowałem cały pakiet OnceClick ze strony SAP-a . Pomogło. Prawdopodobie 1 z assembly nie było zarejestrowane w gac.
Pozdrawiam
TK -
Witam
Próbuje wywołać formę z podglądem raportu. U mnie nie ma problemu, a u klietna wyskakuje exception ,które opisałem w 1 poście.
InitializeComponent();
var reportName = Path.GetDirectoryName(Application.ExecutablePath) + "\\test.rpt";
ReportDocument raport = new ReportDocument();
raport.Load(reportName);
ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues = new ParameterValues();
ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();
crParameterDiscreteValue.Value = paramtest;
crParameterFieldDefinitions = raport.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions["paramtest"];
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterValues.Clear();
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
_crConnectionInfo = new ConnectionInfo();
Tables CrTables;
_crConnectionInfo.ServerName = CrConnectionInfo.ServerName;
_crConnectionInfo.DatabaseName = CrConnectionInfo.DatabaseName;
_crConnectionInfo.UserID = CrConnectionInfo.UserName;
_crConnectionInfo.Password = CrConnectionInfo.Password;
CrTables = raport.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = _crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
crystalReportViewer1.ReportSource = raport;
crystalReportViewer1.Refresh(); -
Witam
Może ktoś spotkał się z problemem wywołania na stacji klienta raportu z kodu c#. Dostaję błąd :
System.MissingMethodException: Nie odnaleziono metody: 'Void CrystalDecisions.CrystalReports.Engine.PrintOptions.set_NoPrinter(Boolean)'.
Biblioteki przegrane są z bin/release , zainstalowany runtime najnowszy do cr i efekt jest taki ,że w moim środowisku raport się ładnie odpala , a u klienta nawet się nie ładuje.
Jeśli ktoś spotkał się z podobnym problemem to proszę o kontakt -
Poprawka
SELECT Datename(mm,[date]) FROM CTE_DatesTable group by Datename(mm,[date])
i w przypadku kiedy mamy zakres dat od 2010.01.01 do 2010.12.31 rekurencja wykona się 364 razy, natomiast w moim przykładzie maksymalnie 12. Więc myślę że nie jest to efektywne. -
Nie rozumiem po co jest drążenie funckji Datename skoro temat jest zupełnie inny i tej funcji nie można użyć w danym problemie. Poza tym CTE działa od MSSQL2005 i jeśli Pan chce to proszę podać rozwiązanie dla problemu z tematu postu przy użyciu tego mechanizmu.
-
Panie Przemysławie, to jest kwestia nawyków jakie stosujemy w programowaniu. Ja wolę nie sprawdzać w każdym zapytaniu jakie mamy ustawienia lokalne itp., gdyż może to powodować potencjalny błąd jak o tym zapomnę.
Nie mniej jednak to o czym dyskutujemy nie odnosi się do tematu początkowego. -
To jest wprawdzie najprostsze rozwiązanie,ale posiada duży mankament że musimy pamiętać ,bądź ustawiać również format dat. Dla przykładu:
SET LANGUAGE English
DECLARE @Today DATETIME
SET @Today = '2007/12/1'
select DATENAME (mm,@today)
wynik = december
SET LANGUAGE Polish
DECLARE @Today DATETIME
SET @Today = '2007/12/1'
select DATENAME (mm,@today)
wynik = styczeń
A tak żeby było w temacie to proponuje takie rozwiązanie , uproszczone bo zakładam że daty są z jednego roku, inaczej trzeba zwracać rok i miesiąc:
CREATE TABLE [dbo].[Mce](
[Nr] [int] NOT NULL,
[NazwaMc] [varchar](50) COLLATE Polish_CI_AS NOT NULL
) ON [PRIMARY]
--dodajemy numery i nazwy miesięcy
create procedure mce_z_dat (@dataod datetime,@datado datetime)
as
begin
declare @miesiacod int
declare @miesiacdo int
SET @miesiacod=MONTH(@dataod)
SET @miesiacdo=MONTH(@datado)
create table #miesiace(mc int)
if YEAR(@dataod)=YEAR(@datado)
begin
while @miesiacod<= @miesiacdo
begin
insert into #miesiace(mc) values(@miesiacod)
SET @miesiacod=@miesiacod+1
end
end
SELECT NazwaMc FROM #miesiace JOIN Mce ON Nr=mc
endTomasz Kozakiewicz edytował(a) ten post dnia 26.08.10 o godzinie 23:50 -
W MSSQL :
SELECT DATENAME(mm,_data) from ....
żeby było po polsku, zrób tabelę:
CREATE TABLE [dbo].[Mce](
[Nr] [int] NOT NULL,
[NazwaMc] [varchar](50) COLLATE Polish_CI_AS NOT NULL
) ON [PRIMARY]
wpisz numery i nazwy miesięcy
i dopisz funkcję:
CREATE FUNCTION dbo.MonthName (@Data datetime)
RETURNS varchar(50)
AS
BEGIN
declare @nmc varchar(50)
declare @NrMc int
SELECT @NrMc=Month(@Data)
if @NrMc between 1 and 12
begin
SELECT @nmc=NazwaMc FROM dbo.Mce WHERE Nr=@NrMc
end
else
begin
-- obsługa błędu albo nie zwracamy nic
SET @nmc=''
end
RETURN @nmc
ENDTomasz Kozakiewicz edytował(a) ten post dnia 24.08.10 o godzinie 19:28