Как использовать ExecuteScalar (), чтобы получить значение и передать его в textbox.text? - PullRequest
0 голосов
/ 21 ноября 2018

это моя таблица:

CREATE TABLE [dbo].[InvoiceTable] (
    [Id]                 INT           IDENTITY (1, 1) NOT NULL,
    [CodeColumn]         NVARCHAR (50) NOT NULL,
    [NameColumn]         NVARCHAR (50) NOT NULL,
    [QTYColumn]          INT           NULL,
    [TotalQTYColumn]     INT           NULL,
    [UnitCostColumn]     INT           NOT NULL,
    [DiscountRateColumn] FLOAT (53)    DEFAULT ((0)) NULL,
    [RowTotalColumn]     AS            (([QTYColumn]*[UnitCostColumn])*((1)-[DiscountRateColumn])) PERSISTED,
    PRIMARY KEY CLUSTERED ([Id] ASC)
);

У меня есть форма счета и форма подтверждения.Пользователь выбирает нужный товар в первой форме и подтверждает, сколько он / она должен заплатить во второй форме.Я хочу, чтобы моя программа показывала значение sum(RowTotalColumn) в виде текста в моем TotalCostTextBox.Text.Я написал следующий код:

private int ConfirmForm_Load(object sender, EventArgs e)
{
    string selectQuery = "SELECT Sum(RowTotalColumn) FROM InvoiceTable";
    var sqlcmd = new SqlCommand(selectQuery, sqlcon);
    var result = sqlcmd.ExecuteScalar();
    return int.Parse(result.ToString());
    TotalCostTextBox1.Text = result.ToString();

, когда я ставлю TotalCostTextBox1.Text = result.ToString(); после return, он кричит

Обнаружен недоступный код

, когда япоставьте его перед return, TotalCostTextBox1 ничего не показывает ...

Подскажите, пожалуйста, как заполнить TotalCostTextBox1 значением.не о возврате заявления.

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Обнаружен недоступный код

Итак, вы назначаете текстовое поле после оператора return, который никогда не будет достигнут.это обработчик событий, поэтому он должен иметь тип void, поскольку обработчик событий ничего не возвращает.

private void ConfirmForm_Load(object sender, EventArgs e)
{
    string selectQuery = "SELECT Sum(RowTotalColumn) FROM InvoiceTable";
    var sqlcmd = new SqlCommand(selectQuery, sqlcon);
    var result = sqlcmd.ExecuteScalar();                
    this.TotalCostTextBox1.Text = result.ToString();

Учитывая, что TotalCostTextBox1 - это имя экземпляра элемента управления TotalCostTextBox1

0 голосов
/ 21 ноября 2018

Вам нужно поместить ниже оператора присваивания перед возвратом

TotalCostTextBox1.Text = result.ToString();

Ваш окончательный код должен быть таким, как показано ниже:

private void ConfirmForm_Load(object sender, EventArgs e)
{
    string selectQuery = "SELECT Sum(RowTotalColumn) FROM InvoiceTable";
    var sqlcmd = new SqlCommand(selectQuery, sqlcon);
    var result = sqlcmd.ExecuteScalar();
    TotalCostTextBox1.Text = result.ToString();
    //return int.Parse(result.ToString());
}

Также вам необходимо проверить привязку события с помощью функции ConfirmForm_Load,Чтобы убедиться в этом, проверьте, доступна ли следующая строка в ConfirmForm.Designer.cs

this.Load += new System.EventHandler(this.ConfirmForm_Load);
0 голосов
/ 21 ноября 2018

Тип возврата вашего метода - int, поэтому вы получаете ошибку.Вы можете изменить тип возвращаемого вами метода на void и удалить ключевое слово return:

private void ConfirmForm_Load

И

var result = sqlcmd.ExecuteScalar();
int x = int.Parse(result.ToString());
TotalCostTextBox1.Text = x.ToString();
...