Announcement

Collapse
No announcement yet.

Giúp mình lỗi Conversion failed when converting datetime from character string!!

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C#] Giúp mình lỗi Conversion failed when converting datetime from character string!!

    Mình tạo 1Form để tim kiếm theo 3 điều kiện là mã số(txtmasp) ,ngày1(dateTimePicker1), ngày2(dateTimePicker1) và sư kiện click của nút lệnh trên Form như sau:
    Code:
    Baocao bt=new Baocao();//lớp baocao 
            private void cmdtimkiem_Click(object sender, EventArgs e)
            {
                    coso.moketnoi();
                    dataGridView1.DataSource = bt.timsanpham(txtmasosp.Text, dateTimePicker1.Text, dateTimePicker2.Text);
                    dataGridView1.DataMember = txtmasosp.Text;
                }
    Và lớp báo cáo để xử lý như sau:
    Code:
    class Baocao
        {
            public DataSet timsanpham(string maso, string ngay1,  string ngay2)
            {
                string sql = string.Format("select thongtinxuat.sochungtu,thongtinxuat.ngay,danhsachsanpham.maso, danhsachsanpham.tensanpham, thongtinxuat.soluong from danhsachsanpham, thongtinxuat where danhsachsanpham.maso = thongtinxuat.maso AND thongtinxuat.maso ='{0}' AND thongtinxuat.ngay BETWEEN  '{1}' AND  '{2}'", maso, ngay1, ngay2);
                SqlCommand cmd = new SqlCommand(sql, coso.cn);
                SqlDataAdapter amd = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                amd.Fill(ds,maso);//LOI DONG NAY : Conversion failed when converting datetime from character string!!
                return ds;
            }
    Bạn nào bit mình sai hay lổi chổ nào chỉ dùm mình với.!!!Thanks nhiều!!

  • #2
    string sql = string.Format("select thongtinxuat.sochungtu,thongtinxuat.ngay,danhsachs anpham.maso, danhsachsanpham.tensanpham, thongtinxuat.soluong from danhsachsanpham, thongtinxuat where danhsachsanpham.maso = thongtinxuat.maso AND thongtinxuat.maso ='{0}' AND thongtinxuat.ngay BETWEEN '{1}' AND '{2}'", maso, ngay1, ngay2);
    Field thongtinxuat.ngay của bạn là kiểu gì? Datetime?
    Thử đổi lại thành:
    string sql = string.Format("select thongtinxuat.sochungtu,thongtinxuat.ngay,danhsachs anpham.maso, danhsachsanpham.tensanpham, thongtinxuat.soluong from danhsachsanpham, thongtinxuat where danhsachsanpham.maso = thongtinxuat.maso AND thongtinxuat.maso ='{0}' AND thongtinxuat.ngay BETWEEN '{1}' AND '{2}'", maso, CONVERT(datetime,ngay1,105), CONVERT(datetime,ngay2,105));

    Comment


    • #3
      ném source lên đây tui debug giùm cho
      Waiting for the day my nickname get painted black and underlined ...!

      Comment


      • #4
        Field thongtinxuat.ngay của mình là kiểu datetime
        Mình đã thử như bạn nói:
        Code:
        string sql = string.Format("select thongtinxuat.sochungtu,thongtinxuat.ngay,danhsachsanpham.maso,danhsachsanpham.tensanpham,thontinxuat.soluong from danhsachsanpham,thongtinxuat where danhsachsanpham.maso=thongtinxuat.maso and thongtinxuat.maso='{0} and thongtinxuat.ngay between '{}' and '{2}",maso,Convert(datetime,ngay1,105),Convert(datetime,ngay2,105));
        nhưng vẫn ko được nó báo lỗi chổ datetime!!! mình đã thử sửa lại thành DateTime nhưng vẫn lỗi chổ đó!!
        Trong sql mình viết như thế này thì nó lại chạy ra kết quả:
        Code:
        SELECT     thongtinxuat.sochungtu, thongtinxuat.ngay, danhsachsanpham.maso, danhsachsanpham.tensanpham, thongtinxuat.soluong
        FROM         danhsachsanpham INNER JOIN thongtinxuat ON danhsachsanpham.maso = thongtinxuat.maso
        WHERE     (thongtinxuat.maso = 'TB04') AND (thongtinxuat.ngay BETWEEN CONVERT(DATETIME, '2012-09-10', 102) AND CONVERT(DATETIME, '2012-11-13', 102))
        Hix chả bit sao nữa!!
        Mình nghĩ kiểu ngày mình phải chuyển từ '10/09/2012' sang '2012/09/10' trước khi đưa vào câu lệnh sql!! mà không bit làm thế nào?? Ai bit chỉ mình đi!!

        Comment


        • #5
          Ok sau một ngày mày mò và kiểm tra cuối cùng mình cũng đã tìm ra lý do mình bì sai!!! hihi zui quá!!:funny:
          Thứ 1: cái datePicker của mình nó cho ra ngày có dạng "20 tháng mười 2012" tức là 1 chuỗi thì làm sao mình định dạng qua kiểu ngày theo Convert đc. Muốn convert đc thì mình chuyển datePicker thành datetimeInput là ok vì nó cho ra ngày kiểu "20/10/2012"
          Thứ 2: hàm Convert trong C# nó ko hiểu được vì chỉ sài cho sql nên mình phải viết nó trong câu lệnh sql
          Và đây la code của mình:
          Code:
          string sql = string.Format("SELECT thongtinxuat.sochungtu, thongtinxuat.ngay, danhsachsanpham.maso, danhsachsanpham.tensanpham,
          thongtinxuat.soluong FROM danhsachsanpham INNER JOIN thongtinxuat ON danhsachsanpham.maso = thongtinxuat.maso 
          WHERE(thongtinxuat.maso = '{0}') AND (thongtinxuat.ngay BETWEEN 
          CONVERT(DATETIME, '{1}', 105) AND CONVERT(DATETIME, '{2}', 105))",maso,ngay1,ngay2);
          Chổ INNER JOIN......ON cũng giống như mình để trong where thui!! tại minh copy trong sql ra sửa nên để y vậy lun!! ^^
          Last edited by haucanpop6590; 03-11-2012, 09:46.

          Comment


          • #6
            Nhân tiện cho mình hỏi ai bit cách đưa phần mềm C# lên mạng Internet ko!! theo kiểu nhập địa chỉ vào trinh duyệt giống như Web đó!!Mình đã đăng ký host với tên miền rùi giờ làm sao để đưa lên đây!! Ai bit giúp mình với nhé!! Thanks

            Comment


            • #7
              Originally posted by haucanpop6590 View Post
              Nhân tiện cho mình hỏi ai bit cách đưa phần mềm C# lên mạng Internet ko!! theo kiểu nhập địa chỉ vào trinh duyệt giống như Web đó!!Mình đã đăng ký host với tên miền rùi giờ làm sao để đưa lên đây!! Ai bit giúp mình với nhé!! Thanks
              Có phải ý bạn là ứng dụng Web?
              Chưa....

              Comment


              • #8
                Kinh nghiệm khi sử dụng kiểu ngày tháng khi làm việc với cơ sở dữ liệu trong C# là các bạn hãy sử dụng SqlParameter thay vì tạo chuỗi truy vấn bằng cách ghép chuỗi. Khi sử dụng SqlParameter thì .NET sẽ tự động convert kiểu dữ liệu truyền vào tương thích với kiểu dữ liệu trong database (giả sử các bạn định dạng ngày trong database là dd/mm/yyyy trong khi trên GUI các bạn lại định dạng là mm/dd/yyyy thì sao)
                Chưa....

                Comment


                • #9
                  Originally posted by 08520522 View Post
                  Có phải ý bạn là ứng dụng Web?
                  Thì mình đang làm bằng C# mà

                  Comment


                  • #10
                    Originally posted by 08520522 View Post
                    Kinh nghiệm khi sử dụng kiểu ngày tháng khi làm việc với cơ sở dữ liệu trong C# là các bạn hãy sử dụng SqlParameter thay vì tạo chuỗi truy vấn bằng cách ghép chuỗi. Khi sử dụng SqlParameter thì .NET sẽ tự động convert kiểu dữ liệu truyền vào tương thích với kiểu dữ liệu trong database (giả sử các bạn định dạng ngày trong database là dd/mm/yyyy trong khi trên GUI các bạn lại định dạng là mm/dd/yyyy thì sao)
                    Bạn có thể cho ít ví dụ được ko!! cái đó mình chưa dùng bao giờ!! Mới học nên ko bik mong bạn chỉ giáo nhiều!!!

                    Comment


                    • #11
                      Originally posted by haucanpop6590 View Post
                      Thì mình đang làm bằng C# mà
                      C# là ngôn ngữ lập trình dùng để viết ứng dụng, và có nhiều loại ứng dụng chạy trên các nền tảng khác nhau (Web, Desktop, Mobile). Bạn cần phân biệt rõ các loại ứng dụng này. Bạn có thể dùng ASP.NET và C# để viết ứng dụng Web

                      Bạn có thể cho ít ví dụ được ko!! cái đó mình chưa dùng bao giờ!! Mới học nên ko bik mong bạn chỉ giáo nhiều!!!
                      Bạn có thể search trên mạng, rất nhiều tài liệu hướng dẫn, ví dụ http://www.codeproject.com/Articles/...-with-VB-NET-C
                      Chưa....

                      Comment


                      • #12
                        Originally posted by 08520522 View Post
                        C# là ngôn ngữ lập trình dùng để viết ứng dụng, và có nhiều loại ứng dụng chạy trên các nền tảng khác nhau (Web, Desktop, Mobile). Bạn cần phân biệt rõ các loại ứng dụng này. Bạn có thể dùng ASP.NET và C# để viết ứng dụng Web
                        Mình đang viết cho desktop( đuôi file kiểu .cs)!! Mình đã viết xong rùi giờ muồn chuyển bài của mình để chạy được trên Web thì phải làm sao ??

                        Comment

                        LHQC

                        Collapse
                        Working...
                        X