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-битную версию). Но эти вещи задокументированы в интернете, так что вам просто нужно прочитать их и быть осторожным...