Member 9720862 Ответов: 1

64-битная системная проблема


У меня есть марка ниже fuction, которая обновляет NoOfSoldShares в записи запаса.
эта функция отлично работает в 32 битной системе,
но в 64-битной системе NoOfSoldShares не обновляется.

из-за какой-то 64-битной проблемы, связанной с этой функцией, она не работает,
но у меня нет 64-битной системы, чтобы проверить наличие проблемы...

так что, пожалуйста, помогите мне в этом вопросе...если у кого-то есть идея по этому поводу...

Что я уже пробовал:

public static void UpdateStockEntry()
        {
            try
            {
                string Query = "select concat('C',CompanyCode,myear,'SHARE_MKT')  AS Databasename,CompanyCode,myear \n" +
                    "from yearmaster y inner join  companymaster c on y.CompanyAuto=c.autotrno order by myear,CompanyCode asc";
                DataTable database = Program.GetDataTable(Query, Program.SysConn);
                DataTable SysDB = Program.GetDataTable("Select DISTINCT TABLE_SCHEMA  from information_schema.TABLES where TABLE_SCHEMA like '%SHARE_MKT%' ", Program.Conn);
                if (database.Rows.Count > 0)
                {
                    for (int j = 0; j < database.Rows.Count; j++)
                    {
                        string Databasename = database.Rows[j]["Databasename"].ToString();
                        SysDB.DefaultView.RowFilter = "";
                        SysDB.DefaultView.RowFilter = "TABLE_SCHEMA='" + Databasename + "'";

                        if (SysDB.DefaultView.Count > 0)
                        {
                            decimal DbYear = decimal.Parse(database.Rows[j]["myear"].ToString());
                            decimal PrevYear = DbYear - 1;

                            //string CurrYear = Program.ToDate.Year.ToString();
                            string PrevDatabasename = Databasename.Replace(DbYear.ToString(), PrevYear.ToString());
                            SysDB.DefaultView.RowFilter = "";
                            SysDB.DefaultView.RowFilter = "TABLE_SCHEMA='" + PrevDatabasename + "'";

                            if (SysDB.DefaultView.Count > 0)
                            {
                                 Program.Execute("update " + Databasename + ".StockEntry s\n" +
                                 ", " + PrevDatabasename + ".StockEntry sb\n" +
                                 "set s.OpeningIssueShare=ifnull(sb.NoofSoldShares,0)\n" +
                                 "where sb.autotrno=s.autotrno", Program.Conn);
                            }

                            if (Databasename != "")
                            {
                                Program.Execute("update " + Databasename + ".StockEntry set NoofSoldShares=ifnull(OpeningIssueShare,0)", Program.Conn);

                                Program.Execute("update " + Databasename + ".StockEntry s\n" +
                               ",(select AgainstAuto,sum(SubQty) SubQty from " + Databasename + ".salesentrysub group by AgainstAuto) sb\n" +
                               "set NoofSoldShares=ifnull(NoofSoldShares,0)+ifnull(SubQty,0)\n" +
                               "where sb.AgainstAuto=s.autotrno", Program.Conn);
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
                //throw;
            }
        }

CHill60

Что такое Program? (И ваш код, по-видимому, уязвим для атак SQL-инъекций)
Откуда вы знаете, что это 64-битная проблема, а не какая-то другая проблема с вашей установкой (например, строка подключения, расположение базы данных и т. д)

pt1401

Я предполагаю, что ваше решение нацелено на "x32" вместо "AnyCPU"?

Member 9720862

в 32 битном он работает а в 64 битном нет working...so это 64-битная проблема, связанная с машиной.- я в этом уверен..

Richard MacCutchan

Затем, пожалуйста, представьте свои доказательства, объяснив, где именно произошла ошибка.

[no name]

Возможно, если вы перестанете игнорировать исключения, вы поймете, что значит "не работает". Мы понятия не имеем, что значит не работать.

Philippe Mori

Вы противоречите себе. В решении 1 Вы сказали в комментарии, что компилируете в 64-битной версии на 64-битной машине...
Если программа не работает, то это потому, что вы написали неправильный код... или неправильно установили SQL server (например, только 32-битную версию). Но эти вещи задокументированы в интернете, так что вам просто нужно прочитать их и быть осторожным...

1 Ответов

Рейтинг:
1

Alessio.NET

Привет,
только чтобы быть уверенным: вы компилируете 64-битную версию на 32-битной машине? Если это так, просто убедитесь, что 64-разрядные компиляторы установлены на вашем 32-разрядном компьютере, потому что они не установлены по умолчанию


Member 9720862

нет, я компилирую 64-битную версию на 64-битной машине.

Alessio.NET

Вы сказали: "но у меня нет 64-битной системы, чтобы проверить наличие проблемы..."
А теперь постарайся примириться с собой