MIDCOPC Ответов: 1

C# одна форма две таблицы


У меня есть форма А, которую я ввожу в число в поле поиска и нажимаю кнопку. Если номер найден в таблице загрузки, я открываю форму B и заполняю ее данными из таблицы загрузки. Это прекрасно работает. Когда номер в поле поиска будет найден в таблице истории, я хочу открыть форму B и заполнить ее данными из таблицы истории.

У меня есть код, работающий для заполнения формы B, когда данные находятся в таблице загрузки. Я пытаюсь понять, как использовать тот же код в форме B для заполнения формы, когда данные находятся в данных таблицы истории.

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

Приведенный ниже код заполнит форму B, когда данные будут найдены в таблице загрузки.
public void DisplayRecord(string loadNumber)
{
    var loadresult = GlobalConfig.Load_MainTable.GetByLoadNumber(loadNumber);

    if (loadresult != null)
        {
            if (loadresult.InUseBy == "0") // Record not in use
            {
                // Hold the record for current user
                GlobalConfig.Load_MainTable.TakeOwnership(loadresult.LoadMainId, UserId);

                // Store the LoadMainId of the current record
                CurrentRecordId = loadresult.LoadMainId;

                // Populate form
                _firstPickUpAccountCode = loadresult.FirstPickUpAccountCode;
                _lastDeliveryAccountCode = loadresult.LastDeliveryAccountCode;
                loadNumberValue.Text = loadresult.LoadNumber;

BillWoodruff

Опишите структуру истории и таблицы загрузки. Какие элементы управления находятся на FormB ?

Sandeep Mewara

В чем разница или почему вы не можете применить ту же логику к другой таблице?

Oshtri Deka

Напишите весь метод целиком.
Какова структура обеих таблиц?
Как вы получаете данные из БД?

MIDCOPC

Таблицы те же самые. Один - это текущие данные, другой-исторические данные.
Я стараюсь не дублировать код, если это возможно
Сформировать:
использование SpeadIMLibrary;
использование SpeadIMLibrary.Доступа к данным.Модели;
использование SpeadIMUI.FormTools;
использование SpeadIMUI.Межфазные границы;
использование системы;
использование системы.Коллекции.Общий;
использование системы.ComponentModel;
использование системы.Рисование;
использование системы.Окна.Формы;

пространство имен SpeadIMUI.Формы
{
публичный частичный класс AccessorialsMenuForm : Form
{
// Хранит экземпляр родительской формы (LoginForm, который будет)
частная форма _parent;

// Сохраняет идентификатор пользователя текущего пользователя loggid in
частная строка только для чтения _userId;

public AccessorialsMenuForm(родительская форма, строковый идентификатор пользователя)
{
метод InitializeComponent();

_parent = родитель;
_userId = ид_пользователя;
}

частная accessorialsMenuGOButton_Click недействительным(объект отправителя, EventArgs в электронной)
{
if (createModifyReviewAccessorialsRadiobutton.Проверен)
{
ВАР mainresult = GlobalConfig.Load_MainTable.GetByLoadNumber(loadSearchBoxValue.Текст);

//Исправить Тодо замок форма

if (mainresult != null)//load находится в load_mail
{
if (createModifyReviewAccessorialsRadiobutton.Проверено && (!строка.IsNullOrWhiteSpace(loadSearchBoxValue.Текст)))
{
// Pass LoadNumber to LoadProcessingForm
LoadProcessingForm frm = new LoadProcessingForm(this, _userId, loadSearchBoxValue.Текст);
если (ФРМ.IsDisposed == ложь)
{
ФРМ.Показать();
}
loadSearchBoxValue.Текст = "";
createModifyReviewAccessorialsRadiobutton.Проверено = истина;
вернуть;
}
}
else //тест, чтобы увидеть, есть ли в истории
{
var historyresult = GlobalConfig.History_Load_MainTable.GetByLoadNumber(loadSearchBoxValue.Текст);

if (historyresult != null) //load находится в history_load_main
{
// Pass LoadNumber to LoadProcessingForm
LoadProcessingForm frm = new LoadProcessingForm(this, _userId, loadSearchBoxValue.Текст);
если (ФРМ.IsDisposed == ложь)
{
ФРМ.Показать();
}
loadSearchBoxValue.Текст = "";
createModifyReviewAccessorialsRadiobutton.Проверено = истина;
вернуть;
}
}
//TODO: используйте текстовое поле для поиска загрузки, а затем передайте информацию в форму
//LoadFinancialSummaryForm frm = new LoadFinancialSummaryForm(this, _userId, добавьте здесь дополнительные параметры );
//if (_parent is SpeadIMStartForm mainForm)
//{
// форму mainform.openForms.Добавить(frm);
//}
//ФРМ.Показать();
createModifyReviewAccessorialsRadiobutton.Проверено = ложь;
вернуть;
}
остальное, если (accessorialsReportsRadioButton.Проверен)
{
// TODO: измените форму ApplyPaymentForm на форму меню отчетов
//ApplyPaymentForm frm = новая форма ApplyPaymentForm(this, _userId);
//открытые формы.Добавить(frm);
//ФРМ.Показать();
accessorialsReportsRadioButton.Проверено = ложь;
вернуть;
}
еще
{
Ящик для сообщений.Show($"необходимо выбрать переключатель.");
вернуть;
}
}
}
}

Форма B: просто код для заполнения формы:
public void DisplayRecord(string loadNumber)
{
var loadresult = GlobalConfig.Load_MainTable.GetByLoadNumber(loadNumber);

if (loadresult != null)

MIDCOPC

Форма В:
public void DisplayRecord(string loadNumber)
{
var loadresult = GlobalConfig.Load_MainTable.GetByLoadNumber(loadNumber);

if (loadresult != null)
{
if (loadresult.InUseBy == "0") // запись не используется
{
// Удержание записи для текущего пользователя
GlobalConfig.Load_MainTable.TakeOwnership(loadresult.LoadMainId, Идентификатор Пользователя);

// Сохранить LoadMainId текущей записи
CurrentRecordId = loadresult.LoadMainId;

// Заполнить форму
_firstPickUpAccountCode = loadresult.FirstPickUpAccountCode;
_lastDeliveryAccountCode = loadresult.LastDeliveryAccountCode;
loadNumberValue.Text = loadresult.LoadNumber;
shipmentNumberValue.Text = loadresult.ShipmentNumber;
loadStatusValue.Text = loadresult.LoadStatus;
shipperAccountCodeValue.Text = loadresult.ShipperAccountCode;
shipperName1Value.Text = loadresult.ShipperName1;
_shipperName2Value = loadresult.ShipperName2;
_shipperPhoneValue = loadresult.ShipperPhone;
_shipperAddressValue = loadresult.ShipperAddress;
_shipperCityValue = loadresult.ShipperCity;
_shipperStateValue = loadresult.ShipperState;
_shipperZipCodeValue = loadresult.ShipperZipCode;
shipperEmailsValue.Text = loadresult.ShipperEmails;
{
if (loadresult.Send214)
send214Checkbox.Проверено = истина;
}
бковалюэ.Text = loadresult.ВСО;
// Получение списков на основе BCO
LoadAssignmentLists();
LoadOtherSRCList();
// Продолжить заполнение
billToAccountCodeValue.Text = loadresult.BillToAccountCode;
billtoName1Value.Text = loadresult.BillToName1;
_billToName2Value = loadresult.BillToName2;
_billToPhoneValue = loadresult.BillToPhone;
_billToAddressValue = loadresult.BillToAddress;
_billToCityValue = loadresult.Биллтосити;
_billToStateValue = loadresult.Биллтостат;
_billToZipCodeValue = loadresult.BillToZipCode;
{
if (loadresult.Send210)
_billToSend210 = 1;
}
totalWeightValue.Text = loadresult.Общий вес;
totalVolumeValue.Text = loadresult.TotalVolume;
totalQuantityValue.Text = loadresult.TotalQuantity;
totalPickUpsValue.Text = loadresult.TotalPickUps;
totalDeliveriesValue.Text = loadresult.TotalDeliveries;
_stops = int32 значение.Синтаксический анализ(totalDeliveriesValue.Текст) + Int32.Parse(totalPickUpsValue.Текст);
totalMilesValue.Text = loadresult.TotalMiles;
trailerValue.Text = loadresult.Прицеп;
trailerNumberValue.Text = loadresult.Прицеп;
sealNumberValue.Text = loadresult.SealNumber;
// Изменить формат DTP на основе null/MinDate или нет
if (loadresult.TrailerDroppedDate.Равно(Типа Datetime.Параметр minvalue))
{
trailerDroppedDateValue.CustomFormat = " ";
}
еще
{
trailerDroppedDateValue.КР

1 Ответов

Рейтинг:
1

Gerry Schmitz

Где у вас "loadResult", вы просто "результат", представляющие собой либо "загрузить" или "История" (#3)

Тогда у вас есть 2 открытых метода: один, который принимает "номер загрузки" (#1), а другой - "номер истории" (#2).

Вы вызываете #1 или #2 в зависимости от контекста.

В #1 вы получаете "результирующий набор" для "загрузки", передавая его в #3.

В #2 вы делаете то же самое для истории.