Ошибка: Cannot add or update a child row: a foreign key constraint fails
имеется ИС Фондовая биржа. Собственно курсовая работа, написана не мной, я полный ноль. Проект старый 2013-2014г., написан коряво. Но суть вот в чем. Заявки открываются нормально и на продажу и на покупку, но когда ставишь галочку "Купить по рыночной цене" чтобы исполнить одну из заявок, получаем ошибку. Гуглил, но решения так и не нашел. Помогите пожалуйста, курсовой на днях уже сдавать. Если нужно будет еще какой-то код прилепить или скрин - скажите. Скрипт
if (Convert.ToDecimal(ask_orderTableAdapter1.GetVolumeByPriceIssue(Convert.ToDecimal(ask_orderTableAdapter1.GetPrice(DateTime.Now, Issue)), Issue)) >= volumeUpDown.Value)
{
ask_orderTableAdapter1.UpdateVolume(Convert.ToInt32(volumeUpDown.Value),Convert.ToInt32(ask_orderTableAdapter1.GetIDByPriceIssue(Convert.ToDecimal(ask_orderTableAdapter1.GetPrice(DateTime.Now, Issue)), Issue)));
bid_orderTableAdapter1.InsertOrder(Convert.ToInt32(volumeUpDown.Value), Convert.ToDecimal(ask_orderTableAdapter1.GetPrice(DateTime.Now, Issue)), Issue, Trader);
//ЗДЕСЬ ИСКЛЮЧЕНИЕ
contractTableAdapter1.InsertContract(Convert.ToInt32(volumeUpDown.Value), Convert.ToInt32(bid_orderTableAdapter1.GetLastOrderID()), Convert.ToInt32(ask_orderTableAdapter1.GetIDByPriceIssue(Convert.ToDecimal(bid_orderTableAdapter1.GetPrice(DateTime.Now, Issue)), Issue)));
traderTableAdapter1.UpdateQuery(-(Convert.ToInt32(bid_orderTableAdapter1.GetVolumeByID(Convert.ToInt32(bid_orderTableAdapter1.GetLastOrderID())))*Convert.ToDecimal(bid_orderTableAdapter1.GetPriceByID((int)bid_orderTableAdapter1.GetLastOrderID()))), Trader);
bid_orderTableAdapter1.CloseOrder(DateTime.Now, Convert.ToInt32(bid_orderTableAdapter1.GetLastOrderID()));
if(Convert.ToDecimal(ask_orderTableAdapter1.GetVolumeByPriceIssue(Convert.ToDecimal(ask_orderTableAdapter1.GetPrice(DateTime.Now, Issue)), Issue)) == 0)
{
ask_orderTableAdapter1.CloseOrder(DateTime.Now, Convert.ToInt32(ask_orderTableAdapter1.GetIDByPriceIssue(Convert.ToDecimal(ask_orderTableAdapter1.GetPrice(DateTime.Now, Issue)), Issue)));
}
}
Ответы (1 шт):
Автор решения: Aborigen
→ Ссылка
Проблема была решена добавлением задержки между запросами:
bid_orderTableAdapter1.InsertOrder(Convert.ToInt32(volumeUpD own.Value), Convert.ToDecimal(ask_orderTableAdapter1.GetPrice(DateTime.N ow, Issue)), Issue, Trader);
await Task.Delay(1000);
contractTableAdapter1.InsertContract(Convert.ToInt32(volumeU pDown.Value), Convert.ToInt32(bid_orderTableAdapter1.GetLastOrderID()), Convert.ToInt32(ask_orderTableAdapter1.GetIDByPriceIssue(Con vert.ToDecimal(bid_orderTableAdapter1.GetPrice(DateTime.Now, Issue)), Issue)));


