2

私は職場で上司の見積もりマネージャーに取り組んでいますが、いくつか問題があります。これはWPFC#アプリケーションであり、SQLServerデータベースで動作するものを作成したのはこれが初めてです。現在、3つの問題が発生しています。

バックグラウンド:

ユーザーがアプリケーションを開くと、DataGrid、新しい見積もりボタン、およびまだ作成していない他のいくつかのコントロールが表示されます。新しい見積もりボタンを押すと、新しいウィンドウがポップアップし、顧客名や数量などのテキストボックスが表示されます。フォームの下部には送信ボタンがあり、その時点でウィンドウが閉じて、追加した情報は、新しい行としてDataGridに挿入されます。

問題1:

私のデータベースのフィールドの1つはOpen_Quoteと呼ばれ、注文を受け取った日付を保持することになっています。これはプログラムで処理され、私の最初の質問に含まれます。この投稿の下部にすべてのコードを含めますが、ユーザーが送信を押すと、「文字列から日付や時刻を変換するときに変換に失敗しました」というエラーが表示されます。

問題2:

残りのコードをテストし、後で戻って日付の問題を修正するために、そのコードをコメントアウトして、プログラムを再実行してみました。今回は別のエラーが発生します:「'newQuote.Qty'の周りの構文が正しくありません。」

問題3:

繰り返しになりますが、残りのコードを最終的にテストするためにそのコードをコメントアウトすると、「文字列またはバイナリデータが切り捨てられます。このプロセスは終了しました」という3番目のエラーが発生しました。

私の望みは、これら3つの問題すべてを引き起こしている1つのコードがあることですが、私は完全にそこから離れている可能性があります。私はこれを理解しようとして1日以上髪を抜いてきました。とにかく、ここにコードがあります:

newQuote.xaml.cs:

    private void SubmitQuotebtn_Click(object sender, RoutedEventArgs e)
    {
        CustomerData newQuote = new CustomerData();

        int quantity;
        quantity = Convert.ToInt32(Qtytxt.Text);

        string theDate = System.DateTime.Today.Date.ToString("d");

        newQuote.OpenQuote = theDate;
        newQuote.CustomerName = CustNametxt.Text;
        newQuote.OEMName = OemNametxt.Text;
        newQuote.Qty = quantity;
        newQuote.QuoteNumber = QuoteNumtxt.Text;
        newQuote.FdNumber = FabDrawingNumtxt.Text;
        newQuote.RfqNumber = RfqNumtxt.Text;
        newQuote.RevNumber = RevNumtxt.Text;

        try
        {
            string insertConString = Sqtm.Properties.Settings.Default.SqtmDbConnectionString;

            using (SqlConnection insertConnection = new SqlConnection(insertConString))
            {
                insertConnection.Open();

                SqlCommand cmd = new SqlCommand("INSERT INTO General_Info(Open_Quote, Customer_Name, OEM_Name, Qty, Quote_Num, Fab_Drawing_Num, "
                                                + "Rfq_Num, Rev_Num) values('newQuote.OpenQuote', 'newQuote.CustomerName', 'newQuote.OemName', 'newQuote.Qty' "
                                                + "'newQuote.QuoteNumber', 'newQuote.FdNumber', 'newQuote.RfqNumber', 'newQuote.RevNumber')", insertConnection);

                cmd.ExecuteNonQuery();

            }
        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

    }

CustomerData.cs:

    class CustomerData
{
    private string _CustomerName;
    private string _OEMName;
    private string _OpenQuote;
    private int _Qty;
    private string _QuoteNumber;
    private string _FdNumber;
    private string _RfqNumber;
    private string _RevNumber;

    public CustomerData()
    {
        // empty constructor
    }

    public string CustomerName
    {
        get { return _CustomerName; }
        set { _CustomerName = value; }
    }

    public string OpenQuote
    {
        get { return _OpenQuote; }
        set { _OpenQuote = value; }
    }

    public string OEMName
    {
        get { return _OEMName; }
        set { _OEMName = value; }
    }

    public int Qty
    {
        get { return _Qty; }
        set { _Qty = value; }
    }

    public string QuoteNumber
    {
        get { return _QuoteNumber; }
        set { _QuoteNumber = value; }
    }

    public string FdNumber
    {
        get { return _FdNumber; }
        set { _FdNumber = value; }
    }

    public string RfqNumber
    {
        get { return _RfqNumber; }
        set { _RfqNumber = value; }
    }

    public string RevNumber
    {
        get { return _RevNumber; }
        set { _RevNumber = value; }
    }
}

参考までに、SQLServerでこのテーブルを設定する方法は次のとおりです。

Open_Quote, date, not null
Customer_Name, varchar(25), not null
OEM_Name, varchar(25), null
Qty, int, not null
Qute_Num, varchar(20), null
Fab_Drawing_Num, varchar(20), not null
Rfq_Num, varchar(10), null
Rev_Num, varchar(10), null

私を助けてくれる人に事前に感謝します、

  • アンドリュー
4

2 に答える 2

0

パラメータを使用して再試行し、それがどのように行われるかをお知らせください。 http://www.dotnetperls.com/sqlparameter

編集:またはTiesonT.が言ったこと。それはもう少し複雑なだけでさらに良いでしょう。

データグリッドに表示するデータを取得するには、挿入を行った後、グリッドを再バインドできます。挿入したデータが再プルされるように、データソースを更新してください。問題がある場合は、グリッドのデータソースをどこに/どのように設定しているかを示してください。

于 2012-11-11T04:16:21.500 に答える
0

これを試して:

SqlCommand cmd = new SqlCommand("INSERT INTO General_Info(Open_Quote, Customer_Name, OEM_Name, Qty, Quote_Num, Fab_Drawing_Num, "
                                            + "Rfq_Num, Rev_Num) values('" + newQuote.OpenQuote + "','" + newQuote.CustomerName + "','" + newQuote.OemName + "','" + newQuote.Qty + "','" + newQuote.QuoteNumber + "','" + newQuote.FdNumber + "', '" + newQuote.RfqNumber + "','" + newQuote.RevNumber + "' "
                                            + " )", insertConnection);
于 2012-11-11T04:31:29.887 に答える