2017-10-13 5 views
0

Ich versuche, ein Programm auszuführen, wo die Funktion ist, einen Bericht in Excel-Datei zu exportieren. Bisher funktioniert es bei anderen Arten von Berichten, wenn ich auf "Generieren" klicke, aber in diesem Bericht, Game Transaction Report, erhalte ich den Fehler: "Systemfehler: ungültiger Objektname 'GCVS2.dbo.GameTrx". Dies ist der Code für diesen Fall:Systemfehler: Ungültiger Objektname 'Datenbankname'

db.Open(); 
command = new SqlCommand("M_RPT_GameTransactionReport", db); 
strControlValue = GetControlValue(pnlRecordRange, "useDateTimeFrom", ControlType.LabelDateTimePickerFrom); 
if (strControlValue != null) 
{ 
    // dtFrom = DateTime.Parse(DateTime.Parse(strControlValue).ToShortDateString()); 
    dtFrom = Convert.ToDateTime(strControlValue); 

} 

strControlValue1 = GetControlValue(pnlRecordRange, "useDateTimeTo", ControlType.LabelDateTimePickerTo); 
if (strControlValue1 != null) 
{ 
    dtTo = Convert.ToDateTime(strControlValue1); 
    // if (dtTo != DateTime.MinValue) 
    //  dtTo = MaxTimeOfDate(dtTo); 
} 

command.Parameters.AddWithValue("@EventCode",strEvCode); 
command.Parameters.AddWithValue("@PromotionBenefitCode",strPromotionBenefitCode); 
command.Parameters.AddWithValue("@DtFrom",dtFrom); 
command.Parameters.AddWithValue("@DtTo",dtTo); 
command.Parameters.AddWithValue("@CardIdFrom",strCardIDFrom); 
command.Parameters.AddWithValue("@CardIDTo",strCardIDTo); 
command.Parameters.AddWithValue("@SerialNo",strSerialNo); 
command.Parameters.AddWithValue("@Status",strStatus); 




command.CommandType = CommandType.StoredProcedure; 
command.CommandTimeout = 0; 
dr = command.ExecuteReader(); 
ExportExcel(dr); 
db.Close(); 

Wie behebe ich das?

Edit: Unten ist die SQL-Skript für die gespeicherte Prozedur für GameTransactionReport:

` CREATE  PROCEDURE [M_RPT_GameTransactionReport] 
    @EventCode varchar(8), 
    @PromotionBenefitCode varchar (100), 
    @CardIDFrom varchar(50), 
    @CardIDTo varchar(50), 
    @SerialNo varchar(15), 
    @DtFrom datetime, 
    @DtTo datetime, 
    @Status CHAR(1) 
    AS` 

    SET NOCOUNT ON` 

`SELECT G.[GameTrxID] 
     ,G.[EventCode] 
     ,PE.[Description] 
     ,G.[PromotionBenefitCode] 
     ,G.[GameSetupID] 
     ,GE.[GameSetupDescription] 
     ,G.[GameInventoryID] 
     ,G.[GameUnlimitedInventoryID] 
     ,G.[CardId] 
     ,G.[VisiblePoint] 
     ,G.[HiddenPoint] 
     ,G.[LoyaltyPoint] 
     ,G.[VisiblePointEarn] 
     ,G.[TradingDate] 
     ,G.[VoucherSerialNo] 
     ,G.[Winner] 
     ,G.[TerminalID] 
     ,T.[ComputerName] 
     ,G.[CreateBy] 
     ,G.[CreateDate] 
     ,G.[Status] 
     ,G.[CancelReason] 
     ,G.[LastChangeBy] 
     ,G.[LastChangeDate]` 
     ` 


`FROM [GCVS2].[dbo].[GameTrx] G,PromotionEvent PE, GameEventSetup GE , 
    Terminal T with (nolock)` 

`WHERE 
G.TerminalID =T.TerminalID 
AND 
G.EventCode = PE.EventCode 
AND 
G.GameSetupID = GE.GameSetupID 
AND 
(@DtFrom IS NULL OR 
G.[TradingDate] >= @DtFrom) 
AND 
(@DtTo IS NULL OR 
G.[TradingDate] <= @DtTo) 
AND 
(@EventCode = '' OR (G.EventCode = @EventCode)) 
AND 
(@PromotionBenefitCode = '' OR (G.PromotionBenefitCode = @PromotionBenefitCode)) 
AND 
(@CardIDFrom = '' OR (G.CardID >= @CardIDFrom)) 
AND 
(@CardIDTo = '' OR (G.CardID <= @CardIDTo)) 
AND 
(@SerialNo = '' OR (G.VoucherSerialNo = @SerialNo)) 
AND 
(@Status = '' OR (G.Status = @Status))` 
+0

Diese isn Es ist ein C# -Fehler. Es ist ein SQL-Fehler, der von einem Fehler/Problem in der gespeicherten Prozedur herrührt. Als eine Randnotiz sollten Sie Dinge wie SqlCommand in eine 'using (...) {...}' Anweisung einbinden – john

+0

Also ist der Fehler in SSMS? Muss ich den Namen in etwas anderes ändern? –

+0

Irgendwie existiert dbo.gametrx in meiner Datenbank. also nicht sicher warum ich immer noch den fehler bekomme. –

Antwort

0

die gespeicherte Prozedur ändern und diese Zeile ändern:

FROM [GCVS2].[dbo].[GameTrx] 

zu

FROM [dbo].[GameTrx] 
Verwandte Themen