Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,036

HOME > .NET Framework > Forum > ขอความช่วยเหลือครับ เพิ่งหัดใหม่ ใช้ DatePicker เพื่อเป็นเงื่อนไข Select Date/time ในคำสั่ง SQL ไม่ได้ครับ สงสัยว่าเป็นที่ formate วันเวลา แต่แก้ไม่ถูกครับ



 

ขอความช่วยเหลือครับ เพิ่งหัดใหม่ ใช้ DatePicker เพื่อเป็นเงื่อนไข Select Date/time ในคำสั่ง SQL ไม่ได้ครับ สงสัยว่าเป็นที่ formate วันเวลา แต่แก้ไม่ถูกครับ

 



Topic : 130465



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์




ลักษณะ form ที่ใช้
Error ที่เกิดขึ้นครับ
Code ส่วนการเลือก วันเวลา



Tag : .NET, C#, VS 2013 (.NET 4.x)









ประวัติการแก้ไข
2018-03-03 15:39:33
2018-03-03 15:42:12
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-03-03 15:36:05 By : thanongb42 View : 1836 Reply : 16
 

 

No. 1

Guest


ต้องถามก่อนว่า ตอนนี้ ตอนเก็บค่าจาก screen นี้ คุณเก็บอย่างไรครับ เพราะ จ่ะไป query ใน sql server ต้องใส่เป็น format ทีถูกต้องไปอยุ่แล้ว ง่ายๆเลยตอนนี้ ตอนเก็บค่าแล้วส่งเข้าไป sql ลองทำให้อยู่ใน format "yyyy-mm-dd" (ex. "2018-03-03") ดูครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-03 17:15:26 By : alone2534
 


 

No. 2



โพสกระทู้ ( 9,583 )
บทความ ( 2 )



สถานะออฟไลน์


ทำไมไม่ใช้เครื่องมือในการคิวรี่ มีการ binding data type เป็น datetime ไปเลยล่ะครับ มาต่อ string เองทำไม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-03 18:54:11 By : Chaidhanan
 

 

No. 3

Guest


คือ ตอนนี้แก้ให้ใช้ได้แล้วครับ ถ้าลบ "11:59:59 PM'" ออก ตรง Enddate น่ะครับ พอดีว่าจะดึง Time Attendance จนครบเวลาก่อนเที่ยงคืนน่ะครับ พอดีว่า ถ้าเขียน code query บน sql management studio มันไม่มีปัญหาอะไรครับ ยังไงแนะนำด้วยนะครับ ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-03 19:01:42 By : thanongb42
 


 

No. 4

Guest


ดูโค้ดใน SQL และ โค้ดใน vb.net หน่อยครับ ตอนนี้ยังยังไงไปแล้วมั่ง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-03 21:40:27 By : Dr.K
 


 

No. 5



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์


ตอนนี้แก้ได้แล้วครับเอา 11:59:59 PM ออก และเปลี่ยนเป็น dateStart.Value.ToString() แค่ไม่เข้าใจว่าทำไมใส่ 11:59:59 PM ต่อท้าย dateEnd แล้ว Query Error
Code (C#)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace TestConnectSQL
{
    public partial class Form2 : Form
    {
        SqlDataAdapter sda;
        SqlCommandBuilder scb;
        DataTable dt;
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
           
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {

        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("Data Source=LENOVO\\SQLEXPRESS;Initial Catalog=ContinuumDB;Persist Security Info=True;User ID=Andover97;Password=Pyramid97");
            sda = new SqlDataAdapter(@"SELECT       AccessEvent.TimeStamp,AccessEvent.CardType, AccessEvent.SiteCode, AccessEvent.Message, AccessEvent.NonABACardNumber, Personnel.FirstName, Personnel.LastName
FROM            AccessEvent INNER JOIN
                         Personnel ON AccessEvent.PersonIdLo = Personnel.ObjectIdLo
WHERE        AccessEvent.TimeStamp BETWEEN '" + dateStart.Value.ToString() + "' AND '" + dateEnd.Value.ToString()+ "'", con);
            dt = new DataTable();
            sda.Fill(dt);
            dataGridView1.DataSource = dt;
        }

        /// <summary>
        /// Exports the datagridview values to Excel.
        /// </summary>
        private void ExportToExcel()
        {
            // Creating a Excel object.
            Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing);
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;

            try
            {

                worksheet = workbook.ActiveSheet;

                worksheet.Name = "ExportedFromDatGrid";

                int cellRowIndex = 1;
                int cellColumnIndex = 1;

                //Loop through each row and read value from each column.
                for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                {
                    for (int j = 0; j < dataGridView1.Columns.Count; j++)
                    {
                        // Excel index starts from 1,1. As first Row would have the Column headers, adding a condition check.
                        if (cellRowIndex == 1)
                        {
                            worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Columns[j].HeaderText;
                        }
                        else
                        {
                            worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Rows[i].Cells[j].Value.ToString();
                        }
                        cellColumnIndex++;
                    }
                    cellColumnIndex = 1;
                    cellRowIndex++;
                }

                //Getting the location and file name of the excel to save from user.
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.Filter = "Excel files (*.xlsx)|*.xlsx|All files (*.*)|*.*";
                saveDialog.FilterIndex = 2;

                if (saveDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    workbook.SaveAs(saveDialog.FileName);
                    MessageBox.Show("Export Successful");
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                excel.Quit();
                workbook = null;
                excel = null;
            }
        }

        private void btnExport_Click(object sender, EventArgs e)
        {
            ExportToExcel();
        }

        private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
        {
        
        }

        //********************************************************//
    }
}


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-03 23:42:19 By : thanongb42
 


 

No. 6



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์


คุณ Chaidhanan ที่บอกว่า ใช้เครื่องมือในการคิวรี่ มีการ binding data type เป็น datetime ผมยังทำไม่เป็นครับยังไงขอตัวอย่างได้ไหมครับ
ขอบคุณมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-03 23:53:48 By : thanongb42
 


 

No. 7

Guest


ตอบความคิดเห็นที่ : 5 เขียนโดย : thanongb42 เมื่อวันที่ 2018-03-03 23:42:19
รายละเอียดของการตอบ ::
การทำงานกับ datetime ตัว format หรือ ค่าที่เราเก็บไปนั้นสำคัญ เพราะถ้าเราส่งค่าที่ค้นในรูปแบบ format ที่ไม่ตรงกับที่เก็บก็ Error ได้

ผมถึงได้ขอดู SQL และการแสดงค่า sql management studio ที่ว่ามันรันได้ เปรียบเทียบกับใน VB ด้วยนะครับ

จะได้รู้ว่ามันส่งต่างกันยังไง sql management studio ถึงรันได้ แต่ VB กลับ Error

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 00:53:30 By : Dr.K
 


 

No. 8



โพสกระทู้ ( 9,583 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : thanongb42 เมื่อวันที่ 2018-03-03 23:53:48

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 10:04:52 By : Chaidhanan
 


 

No. 9



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์


อันนี้ครับ Code SQL ที่ขอดูครับ
SQL ครับ
Code (SQL)
/****** Script for SelectTopNRows command from SSMS  ******/
SELECT        AccessEvent.TimeStamp,AccessEvent.CardType, AccessEvent.SiteCode, AccessEvent.Message, AccessEvent.NonABACardNumber, Personnel.FirstName, Personnel.LastName
FROM            AccessEvent INNER JOIN
                         Personnel ON AccessEvent.PersonIdLo = Personnel.ObjectIdLo
WHERE        AccessEvent.TimeStamp BETWEEN '2/10/2018' AND '2/21/2018 11:59:59 PM'

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 10:14:55 By : thanongb42
 


 

No. 10



โพสกระทู้ ( 9,583 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
BETWEEN '2/10/2018' AND '2/21/2018 11:59:59 PM'

คำสั่งเปรียบเทียบข้างบน เป็นการเปรียบเทียบแบบ text ทำให้ผิดผลาดได้
ให้ใช้ format yyyy-mm-dd hh:mm:ss กำหนดตำแหน่งให้ชัดเจนในเรื่องของ priority ตามหลักคณิตศาสตร์

แต่แนะนำให้ใช้ เครื่องมือเพราะจะช่วย เรื่อง sql injection ด้วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 10:55:51 By : Chaidhanan
 


 

No. 11

Guest


ตอบความคิดเห็นที่ : 9 เขียนโดย : thanongb42 เมื่อวันที่ 2018-03-04 10:14:55
รายละเอียดของการตอบ ::
ให้ลองทดสอบแบบนี้ครับ

1. ก๊อบ SQL จาก sql management studio โดยที่ไม่ต้องแก้อะไร แล้วเอามาลงใน vb ดูว่ารันแล้ว Error รึป่าว
2. ดูค่า sql ของ sda ที่รับค่ามาจาก datetimepicker ว่า sql เป็นอะไร

ให้ดูว่า sql โดยเฉพาะตรง วันที่มีรูปแบบ ตรงกับ sql จาก sql management studio รึป่าว

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 11:37:41 By : Dr.K
 


 

No. 12

Guest


ลืมบอกไปข้อหนึ่ง

เดือน ต้องใช้ MM ครับ mm จะเป็น นาที
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 11:42:42 By : Dr.K
 


 

No. 13

Guest


ลืมอีกแล้ว

การเช็ค format ควรจะดูให้ตรงกันเปะๆ เช่น ปีที่ได้จาก datetimepicker อาจจะได้ค่าออกมาเป็น 2561 แต่ใน data เป็น 2018
แบบนี้เวลาค้นก็จะไม่เจอค่าเหมือนกัน

เอาให้ชัว อาจจะกำหนดไปเลยว่าเป็น US

Code (VB.NET)
strSQL1 = "SELECT  * FROM  table WHERE DateTime BETWEEN '" + dateTimePicker1.Value.ToString("MM/dd/yyyy", new CultureInfo("en-US")) + "' AND '" + dateTimePicker2.Value.ToString("MM/dd/yyyy", new CultureInfo("en-US")) + " 11:59:59 PM'"

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 11:49:58 By : Dr.K
 


 

No. 14



โพสกระทู้ ( 5 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าผมใส่ 11:59:59 PM ดังใน code รันยัง ไม่ผ่านครับ
Code (SQL)
WHERE        AccessEvent.TimeStamp BETWEEN '" + dateStart.Value.ToString("MM/dd/yyyy", new CultureInfo("en-US")) + "' AND '" + dateEnd.Value.ToString("MM/dd/yyyy hh:mm:ss", new CultureInfo("en-US")) + "11:59:59 PM'", con);


แต่ถ้าลบออก ก็ผ่านฉลุยครับ
Code (SQL)
SqlConnection con = new SqlConnection("Data Source=LENOVO\\SQLEXPRESS;Initial Catalog=ContinuumDB;Persist Security Info=True;User ID=Andover97;Password=Pyramid97");
            sda = new SqlDataAdapter(@"SELECT       AccessEvent.TimeStamp,AccessEvent.CardType, AccessEvent.SiteCode, AccessEvent.Message, AccessEvent.NonABACardNumber, Personnel.FirstName, Personnel.LastName
FROM            AccessEvent INNER JOIN Personnel ON AccessEvent.PersonIdLo = Personnel.ObjectIdLo
WHERE        AccessEvent.TimeStamp BETWEEN '" + dateStart.Value.ToString("MM/dd/yyyy", new CultureInfo("en-US")) + "' AND '" + dateEnd.Value.ToString("MM/dd/yyyy hh:mm:ss", new CultureInfo("en-US")) + "'", con);

ผลลัพะ์ที่ได้ครับ
rusault
การเลือกแบบนี้ การใส่เวลา hh:mm:ss PM มันจำเป็นต้องใส่ไหมครับ กรณีนี้
ขอบคุณมากๆ ทุกคำแนะนำครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 12:26:25 By : thanongb42
 


 

No. 15

Guest


ก๊อบ SQL จาก sql management studio โดยที่ไม่ต้องแก้อะไร แล้วเอามาลงใน vb ดูว่ารันแล้ว Error รึป่าว
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-04 13:32:03 By : Dr.K
 


 

No. 16



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ลอง ดีบัก ค่า SQL จาก VB แล้วเทียบกับ โค้ดจาก SQL แบบ ตัวอักษร ครับ
ใน VB มีจุดที่ต่างจาก SQL อย่างเห็นได้ชัด ทำให้ ไม่สามารถรันได้

อีกวิธีในการเช็คความถูกต้องของ SQL คือ datawizard

https://www.thaicreate.com/community/csharp-add-query-parameter-in-wizard-ban-ban/view.html

เร็วกว่า สะดวกกว่า ไม่ต้องเดา โค้ด 3 วัน 7 วัน ด้วยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-03-05 17:39:47 By : lamaka.tor
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอความช่วยเหลือครับ เพิ่งหัดใหม่ ใช้ DatePicker เพื่อเป็นเงื่อนไข Select Date/time ในคำสั่ง SQL ไม่ได้ครับ สงสัยว่าเป็นที่ formate วันเวลา แต่แก้ไม่ถูกครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่