简体   繁体   中英

How to fill data from object to data table in C#?

I am newbee to .net code. I can understand the code but, feeling difficult to do changes. I am calling the method "threading" and passing a object parameter . I want to fill data in that object to fill in the data table. But, I am getting an error at that point. I am pasting all the code below and please do the needful help. The below is the error message I am getting: "Object is not an ADODB.RecordSet or an ADODB.Record.\\r\\nParameter name: adodb" and error is at step oleDA1.Fill(dt1, don);

public class Report

   {
        public string ScheduleId;
        public string reportName;
        public string Frequency;
        public string Customer;
        public string Code;
        public string ReportPath;
        public string ReportId;
        public string ReportFormat;
        public string StartDate;
        public string EndDate;

    }

public List<Report> Populatereport(object SSISreport)

    {
        List<Report> list = new List<Report>();
        Report al = null;

        bool fireAgain = true;

        using (OleDbDataAdapter oleDA = new OleDbDataAdapter())
        using (DataTable dt = new DataTable())
        {

               oleDA.Fill(dt, SSISreport);
                foreach (DataRow _row in dt.Rows)
                {
                    al = new Report();

                    al.reportName = _row["ReportName"].ToString();
                    al.ScheduleId = _row["ScheduleId"].ToString();
                    al.Frequency = _row["Frequency"].ToString();
                    al.Customer = _row["Customer"].ToString();
                    al.Code = _row["code"].ToString();
                    al.ReportId = _row["ReportId"].ToString();
                    al.ReportFormat = _row["ReportFormat"].ToString();
                    al.ReportPath = _row["ReportPath"].ToString();
                    al.StartDate = _row["StartDate"].ToString();
                    al.EndDate = _row["EndDate"].ToString();
                    list.Add(al);
                }
        }

        return list;
    }

 private object threading(object don)
    {

        Report aa = new Report();
        DataRow row1;
        ReportEnv env = null;           

        using (OleDbDataAdapter oleDA1 = new OleDbDataAdapter())
        using (DataTable dt1 = new DataTable())
        {

            oleDA1.Fill(dt1, don);--err0r at this point

            row1 = dt1.Rows[0];


            aa.reportName = row1["ReportName"].ToString();
            aa.ScheduleId = row1["ScheduleId"].ToString();
            aa.Frequency = row1["Frequency"].ToString();
            aa.Customer = row1["Customer"].ToString();
            aa.ColcoCode = row1["code"].ToString();
            aa.ReportId = row1["ReportId"].ToString();
            aa.ReportFormat = row1["ReportFormat"].ToString();
            aa.ReportPath = row1["ReportPath"].ToString();
            aa.StartDate = row1["StartDate"].ToString();
            aa.EndDate = row1["EndDate"].ToString();

        }
        ParameterValue[] paramval = new ParameterValue[5];

        paramval[0] = new ParameterValue();
        paramval[0].Name = "Startdate";
        paramval[0].Value = aa.StartDate;
        paramval[1] = new ParameterValue();
        paramval[1].Name = "Enddate";
        paramval[1].Value = aa.EndDate;
        paramval[2] = new ParameterValue();
        paramval[2].Name = "ReportID";
        paramval[2].Value = aa.ReportId;
        paramval[3] = new ParameterValue();
        paramval[3].Name = "Code";
        paramval[3].Value = aa.Code;
        paramval[4] = new ParameterValue();
        paramval[4].Name = "Frequency";
        paramval[4].Value = aa.Frequency;

        ReportExecutionService rs = new ReportExecutionService();
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
        rs.Url = "some url";
        rs.LoadReport(aa.ReportPath, null);
        rs.SetExecutionParameters(paramval, "en-GB");

        String filename = env.Code + "_" + aa.reportName + DateTime.UtcNow.ToString("_dd-MM-yyyy_hh-mm-ss.fff") + "." + aa.ReportFormat;

        //Render the report and generate pdf
        Byte[] results;
        string encoding = String.Empty;
        string mimeType = String.Empty;
        string extension = String.Empty;
        Warning[] warnings = null;
        string[] streamIDs = null;
        string deviceInfo = null;
        results = rs.Render(aa.ReportFormat, deviceInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);


        using (FileStream stream = File.OpenWrite(path+ filename))
        {

            stream.Write(results, 0, results.Length);

        }

     return null;
    }

 public void Main()
    {

        List<Report> aq = new List<Report>();
        aq = Populatereport(Dts.Variables["vnSource_SQL_Result"].Value);

        for (int i = 0; i < aq.Count; i++)
        {

                threading(aq[i]);

                         }   
              }        

检查您的Report类,我猜它应该根据msdn强制转换为Recordset或Record: https ://msdn.microsoft.com/zh-cn/library/5s322715( v= vs.110).aspx

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM