Click here to Skip to main content
15,885,278 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
Im getting this error in my id column, how can i fixed this? please help me. t.y
C#
public List<CategoriesRollup> CategBranch()
{
   var categBranch = new List<CategoriesRollup>();
   const string spName = "categories_rollup_branchlist";
   using (var con = _connectionString.GetConnection())
   using (var cmd = new SqlCommand(spName, con))
   {
      try
      {
         cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = UsersSession.Users.UserName;
         cmd.Parameters.Add("@terminal", SqlDbType.VarChar).Value = IpAddress.GetMyIpAddress();
         cmd.Parameters.Add("@type", SqlDbType.TinyInt).Value = 1;
         cmd.CommandType = CommandType.StoredProcedure;
         var rdr = cmd.ExecuteReader();

         if (rdr.HasRows)
            while (rdr.Read())
               categBranch.Add(new CategoriesRollup
                  {
                     Result = Convert.ToInt32(rdr["result"]),
                     PromoKey = Convert.ToInt32(rdr["Id"]),
                     Branch = rdr["Branch"].ToString(),
                     Combo = rdr["Combo"].ToString(),
                     Category = rdr["Category"].ToString(),
                     Item = rdr["Item"].ToString()
                  });

            cmd.Dispose();
      }


additional information copied from comment below
this is my sp.. maybe i forgot something to write here
SQL
CREATE TABLE #promosPerBranch
(
   id INT IDENTITY (1,1),
   PromoKey int
)
CREATE TABLE #wholebranch (
   Id INT IDENTITY (1,1),
   BranchLookupKey INT,
   Branch VARCHAR(50),
   ComboPromoKey INT,
   Combo VARCHAR(60),
   CategoryKey INT,
   Category VARCHAR(50),
   ItemCategoryKey INT,
   Item VARCHAR(60)
)

INSERT INTO #promosPerBranch
SELECT promo_key AS 'PromoKey' 
FROM dbo.branch_promos 
WHERE branch_lookup_key = branch_lookup_key
SELECT @countPromos = COUNT(*) from #promosPerBranch
SET @startPromos = 1
WHILE @startPromos <= @countPromos
BEGIN
   --SET @id = (SELECT id FROM #wholebranch WHERE Id = (SELECT id FROM #promosPerBranch WHERE id = id)
   --SELECT @id = id FROM #wholebranch WHERE id = Id
   SELECT @branch_code = branch_code FROM dbo.branches WHERE lookup_key = @promoKey
   SELECT @promoKey = promoKey FROM #promosPerBranch WHERE id = @startPromos
   SELECT @categoryKeys = p.category_keys FROM dbo.promos p WHERE [key] = @promoKey
   INSERT INTO #wholebranch
   SELECT  
      --b.[key] AS 'BranchKey',
      b.lookup_key AS 'BranchLookupKey',
      b.branch_code AS 'Branch',
      p.[key] AS 'ComboPromoKey',
      p.name AS 'Combo',
      c.[key] AS 'CategoryKey',
      c.name AS 'Category',
      i.category_key AS 'ItemCategoryKey',
      i.name AS 'Item'
		 
      FROM items i 
         INNER JOIN dbo.branches b ON i.category_key = b.lookup_key
         INNER JOIN dbo.categories c ON i.category_key = c.[key]  
         INNER JOIN dbo.promos p ON p.[key] = @promoKey
         WHERE category_key IN (SELECT [key] FROM dbo.categories
         WHERE [key] IN (SELECT * FROM dbo.parse_comma_delimited_string(@categoryKeys)))
   SET @startPromos = @startPromos + 1
END
Posted
Updated 15-Oct-14 23:00pm
v3

Probably, because your stored procedure is not returning a column called "Id".

Check the SP, (run it in SSMS) and see exactly what columns it returns.
 
Share this answer
 
Comments
Henley A Dispo 16-Oct-14 4:16am    
this is my sp.. maybe i forgot something to write here
CREATE TABLE #promosPerBranch
(
id INT IDENTITY (1,1),
PromoKey int
)
CREATE TABLE #wholebranch (
Id INT IDENTITY (1,1),
BranchLookupKey INT,
Branch VARCHAR(50),
ComboPromoKey INT,
Combo VARCHAR(60),
CategoryKey INT,
Category VARCHAR(50),
ItemCategoryKey INT,
Item VARCHAR(60)

)

INSERT INTO #promosPerBranch
SELECT promo_key AS 'PromoKey'
FROM dbo.branch_promos
WHERE branch_lookup_key = branch_lookup_key
SELECT @countPromos = COUNT(*) from #promosPerBranch
SET @startPromos = 1
WHILE @startPromos <= @countPromos
BEGIN
--SET @id = (SELECT id FROM #wholebranch WHERE Id = (SELECT id FROM #promosPerBranch WHERE id = id)
--SELECT @id = id FROM #wholebranch WHERE id = Id
SELECT @branch_code = branch_code FROM dbo.branches WHERE lookup_key = @promoKey
SELECT @promoKey = promoKey FROM #promosPerBranch WHERE id = @startPromos
SELECT @categoryKeys = p.category_keys FROM dbo.promos p WHERE [key] = @promoKey

INSERT INTO #wholebranch
SELECT
--b.[key] AS 'BranchKey',
b.lookup_key AS 'BranchLookupKey',
b.branch_code AS 'Branch',
p.[key] AS 'ComboPromoKey',
p.name AS 'Combo',
c.[key] AS 'CategoryKey',
c.name AS 'Category',
i.category_key AS 'ItemCategoryKey',
i.name AS 'Item'

FROM items i
INNER JOIN dbo.branches b ON i.category_key = b.lookup_key
INNER JOIN dbo.categories c ON i.category_key = c.[key]
INNER JOIN dbo.promos p ON p.[key] = @promoKey
WHERE category_key IN (SELECT [key] FROM dbo.categories
WHERE [key] IN (SELECT * FROM dbo.parse_comma_delimited_string(@categoryKeys)))
SET @startPromos = @startPromos + 1

END
OriginalGriff 16-Oct-14 4:27am    
And? When you run it in SSMS what does it return?
I can't tell because I have no access to your data...
Henley A Dispo 16-Oct-14 4:41am    
i hve new error
An explicit value for the identity column in table '#wholebranch' can only be specified when a column list is used and IDENTITY_INSERT is ON.

Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 0, current count = 1.
Henley A Dispo 16-Oct-14 4:48am    
well sir i did not run to ssms.. i just apply wt u said
Probably, because your stored procedure is not returning a column called "Id".

Check the SP.
OriginalGriff 16-Oct-14 4:52am    
So use SSMS and check the SP - it looks like you have all sorts of problems with that, which you need to sort out first. It may well fix the problem you are seeing in your C# code when you fix the SP...
I now solved this. I created 3 temp table then select them. Thanks to my friend.

SQL
SELECT
          b.[key] AS 'PromoKey'
          ,b.branch_code AS 'Branch'
          ,p.name AS 'Combo'
          ,c.name AS 'Category'
          ,i.name AS 'Item'
    FROM branches b
        INNER JOIN branch_promos bp
        ON bp.branch_lookup_key = b.lookup_key
            INNER JOIN #TempPromosResult p
            ON p.promo_key = bp.promo_key
                INNER JOIN categories c
                ON c.[key] = p.category_key
                    INNER JOIN items i
                    ON i.category_key = c.[key]
    WHERE b.branch_code = b.branch_code
    GROUP BY p.name
            ,b.[key]
            ,b.branch_code
            ,c.name
            ,i.name
    ORDER BY b.branch_code
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900