PDA

View Full Version : Chèn ngày, giờ hiện tại vào data Access trong C#



minhhn0205
29-03-2010, 09:33 AM
M đang làm C# với CSDL là Access, giờ làm sao khi nhấn 1 button thì nó insert được ngày, giờ hệ thống vào 1 field trong table được nhỉ!?



String insertGioKetThuc = "INSERT INTO hoadon (gio_kt) VALUES (?)";
// Chèn DL
OleDbCommand cmdDsHoadon = new OleDbCommand();
cmdDsHoadon.CommandText = insertGioKetThuc;
cmdDsHoadon.Parameters.Add("@gioketthuc", ????????????);
//Thuc thi cau sql
if (DB.Query2(cmdDsBan))


M viết vậy đúng chưa nhỉ!? Giờ còn vướng chỗ ???????????? ko biết chèn cái j để nó lưu ngày, giờ hiện tại vào database

dielove
29-03-2010, 10:23 AM
dùng datetime.now()

minhhn0205
29-03-2010, 10:39 AM
M viết 1 hàm để thêm giờ kết thúc vào thế này:


private void themGioKetThuc(String giokt)
{
// Tạo query insert vào table pov_hoadon
String insertDsHoaDon = "INSERT INTO hoadon (gio_kt) VALUES (?)";


// Chèn DL
OleDbCommand cmdDsHoaDon = new OleDbCommand();
cmdDsHoaDon.CommandText = insertDsHoaDon;
cmdDsHoaDon.Parameters.Add("@gioketthuc", Convert.ToString(giokt));

//Thuc thi cau sql
DB.Query2(cmdDsHoaDon);
}


Và viết sự kiện Click cho cái button là:


DateTime tmp = DateTime.ToDay;
String gkt = tmp.ToString("dd/MM/yyyy");
themGioKetThuc(gkt);


Khi insert vào CSDL nó chỉ ra format ngày như mình chỉ ở trên, giờ m phải làm thế nào để lấy được cả giờ:phút:giây:AM(PM) nữa nhỉ!?


ngày/tháng/năm giờ:phút:giây:AM(hoặc PM)


:-??

dielove
29-03-2010, 10:45 AM
cái datetime chứa tất cả các chuỗi định dạng roài mà thêm hh/mm/ss

minhhn0205
29-03-2010, 10:58 AM
cái datetime chứa tất cả các chuỗi định dạng roài mà thêm hh/mm/ss

Thêm thế nào bạn ơi :)

dielove
29-03-2010, 02:01 PM
tmp.ToString("dd/MM/yyyy/hh/mm/ss");

minhhn0205
29-03-2010, 02:07 PM
tmp.ToString("dd/MM/yyyy/hh/mm/ss");

Nếu để thế này là bị lỗi mà bạn :(|

http://img175.imageshack.us/img175/9946/errordatetime.png (http://img175.imageshack.us/i/errordatetime.png/)

HCrK
29-03-2010, 03:21 PM
Bạn sử dụng chuỗi định dạng là MM/dd/yyyy hh:mm tt thì sẽ hợp lệ trong Access, ví dụ



OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb");
con.Open();

string str = DateTime.Now.ToString("MM/dd/yyyy hh:mm tt");
OleDbCommand cmd = new OleDbCommand("insert into t1 values('"+str+"')", con);
cmd.ExecuteNonQuery();
con.Close();

minhhn0205
29-03-2010, 04:03 PM
Bạn sử dụng chuỗi định dạng là MM/dd/yyyy hh:mm tt thì sẽ hợp lệ trong Access, ví dụ



OleDbConnection con=new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb");
con.Open();

string str = DateTime.Now.ToString("MM/dd/yyyy hh:mm tt");
OleDbCommand cmd = new OleDbCommand("insert into t1 values('"+str+"')", con);
cmd.ExecuteNonQuery();
con.Close();

Hi cuối cùng cũng gặp cao nhân, làm thế này ok rùi, nhưng cần bổ sung thêm giây nữa thì mới chuẩn khi lưu vào CSDL ^^


string str = DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt");


Thank các bạn nhiều!

Yin Yang
29-03-2010, 09:42 PM
Để lưu định dạng DateTime thì khi dùng parameter bạn phải xác định kiểu dữ liệu cho nó. Nếu không thì dùng cặp dấu ## để bao lại. Nhiều người thường giải quyết bằng cách chuyển DateTime thành chuỗi, thật là...