使用winforms应用程序将列数据作为页眉/页脚添加到同一文本文件中

时间:2014-01-19 16:48:27

标签: c# sql winforms text-files

我是c#的新手,我想使用sql查询发送带有页眉和页脚的文本文件。 我在datagridview中有一个sql结果,然后保存为文本文件。但每次我运行此查询,我应该从SQL查询获得页眉和页脚。因此,我正在考虑为页眉和页脚创建2个按钮,当我单击这些按钮时,它将从sql获取值到datagridview,并将其复制到textfile,并且相同的页脚只是将不同的文本附加到同一文件。我想要我可以做的任何建议。

 private void btnGetData_Click(object sender, EventArgs e)
            {
                 this.btnGetData.Enabled = false;
                Application.DoEvents();
                string stringSql = " SELECT distinct  " +
                       "'" + comboBox6.Text + "' as RecordType" +
                    " , left([CPC No] +'                                     ',30) " +
                      " , space(1983) " +
                     ",'" + comboBox6.Text + " 'as RecordType"  +
                  , left(t.t_reference + '                        ' ,24 )  as ClaimantReference " +
                    " , left([Claim Number] +'                                     ',30) " +
                    " , " + comboBox4.Text + " as CourtCode" +
                    " ,left(ta_title +'                             ',30) as Title   " +
                     " ,left(ta_surname +'                             ',30) as Surname   " +
     ", space(180), bat.PCN_Charge as ClaimAmount " +
    ",[Court Fee] " +
    ",[Solictors Fees]" +
    ", (bat.PCN_Charge + [Court Fee])  as TotalAmount" +
    ",[POC1]" +
   ",'" + textBox2.Text + "' as RequestType" +
    //",'" + comboBox1.Text + "' as RecordType" +
    ",'" + textBox3.Text + "' as TotalCourtFee" +
    ",'" + textBox4.Text + "' as TotalClaimAmount" +
     " , space(1966) " +
    " FROM tickets t " +
    " LEFT OUTER JOIN  " +
    "( " +
    "   SELECT ticket_addresses.ta_system_ref, ta_title, ta_othername, ta_surname, ta_house_number, ta_address_1, ta_address_2, " +
    "   ta_address_3, ta_address_4, ta_post_code, ta_telephone, ta_organisation " +
    "   FROM ticket_addresses " +
    "   INNER JOIN " +
    "   ( " +
    "       SELECT ticket_addresses.ta_system_ref, MAX(ta_address_code) AS ta_address_code " +
    "       FROM ticket_addresses " +
    "       GROUP BY ta_system_ref " +
    "   ) ad " +
    "   ON (ticket_addresses.ta_system_ref=ad.ta_system_ref AND ticket_addresses.ta_address_code=ad.ta_address_code) " +
    ")ta " +
    "ON (t.t_number=ta.ta_system_ref) " +
    " " +
    " Inner JOIN " +
      " ticket_hold_record  b " +
    " ON ( t.t_number = b.thr_system_ref) " +
    " " +
    "Inner JOIN " +
    "Rpt_PCNBalance_ALLTickets bat " +
    "ON (t.t_number = bat.t_number) " +
    " " +
    "Inner  JOIN " +
    "hold_reasons ch " +
    "ON (b.thr_hold_type = ch.hr_code) " +
    " " +
    "Inner  JOIN " +
    " [VCS].[dbo].[Courtfees] cf " +
    " ON (bat.Payments >= cf. [Min ClaimAmount]) and (bat.Payments <= cf.[Max Claim Amount]) " +
    " " +
    "Inner  JOIN " +
    " [VCS].[dbo].[sites] s " +
    " ON (t.t_contract  = s.Contract) " +
    " " +
    "Inner  JOIN " +
    " [VCS].[dbo].[claim info] cc " +
    " ON (cc.Code  COLLATE DATABASE_DEFAULT = t.t_offence_code COLLATE DATABASE_DEFAULT) " +
              " and t.t_reference IN {where} ";
//Generate list of Ticket IDS for SQL Where Clause
                string whereClause = "";
                string[] tempArray = new string[this.txt.Lines.Length];
                tempArray = this.txt.Lines;
                if (this.txt.Lines.Length == 0)
                {
                    return;
                }
               for (int counter = 0; counter <= tempArray.Length-1; counter++)
                {
                    if (tempArray[counter].Trim().Length > 0)
                    {
                        whereClause = whereClause + "'" + tempArray[counter] + "'" + ", ";
                    }
                }
                whereClause = whereClause.TrimEnd(' ', ',');
                whereClause = "(" + whereClause + ")";
                stringSql = stringSql.Replace("{where}", whereClause);
               myDataset = new DataSet("SQL");
                SqlConnection myConn = new SqlConnection();
               SqlCommand myCommand = new SqlCommand();
                myCommand.CommandType = CommandType.Text;
                myCommand.CommandText = stringSql;
    myCommand.Connection = myConn;
    SqlDataAdapter myAdapter = new SqlDataAdapter();
                myAdapter.SelectCommand = myCommand;
                myAdapter.Fill(myDataset);
                this.dataGridView1.DataSource = myDataset.Tables[0];

                for (int counter = 0; counter < myDataset.Tables[0].Columns.Count; counter++)
                {
                    this.dataGridView1.Columns[counter].SortMode = DataGridViewColumnSortMode.NotSortable;
                }
              this.dataGridView1.Refresh();
   myConn.Close();             this.btnGetData.Enabled = true;
                this.btnSave.Enabled = true;
                Application.DoEvents();

            }

0 个答案:

没有答案