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))`
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
Also ist der Fehler in SSMS? Muss ich den Namen in etwas anderes ändern? –
Irgendwie existiert dbo.gametrx in meiner Datenbank. also nicht sicher warum ich immer noch den fehler bekomme. –