xin hỏi VB6 và SQL server 2005

Góc trao đổi, hỏi đáp của ngôn ngữ Visual Basic 6 và Visual Basic Script

Moderator: tungblt

Post Reply
baoho1977
Thành viên chính thức
Thành viên chính thức
Posts: 41
Joined: Wed 25/05/2011 9:42 am
Has thanked: 8 times

xin hỏi VB6 và SQL server 2005

Post by baoho1977 »

Các bác cho em hỏi 1 chút ạ: em dùng lệnh VB6 sau để insert data vào sql server 2005
+lần 1: (em viết giống như insert vào Access)

Code: Select all

sql_u = "insert into tblDMMaytinh(idmaytinh,idnhaCC,idnuocSX,maMT,chungloai,ngaymua,tinhtrang) values(" & Val(Text1.Text) & "," & id_nhaCC & "," & id_nuocSX & ",'" & Text2.Text & "',#" & Format(TDBDate1.Text, "MM/dd/yyyy") & "#,'" & Combo2.Text & "','" & Combo1.Text & "')"

Báo lỗi: the name “#04” is not permitted in this context…. ( phần bôi đỏ 04 là tháng trong control TDBDate1-04/15/2016)
+ lần 2: Em lại thử lại:

Code: Select all

sql_u = "insert into tblDMMaytinh(idmaytinh,idnhaCC,idnuocSX,maMT,chungloai,ngaymua,tinhtrang) values(" & Val(Text1.Text) & "," & id_nhaCC & "," & id_nuocSX & ",'" & Text2.Text & "'," & TDBDate1.Value & ",'" & Combo2.Text & "','" & Combo1.Text & "')"
hoặc:

Code: Select all

sql_u = "insert into tblDMMaytinh(idmaytinh,idnhaCC,idnuocSX,maMT,chungloai,ngaymua,tinhtrang) values(" & Val(Text1.Text) & "," & id_nhaCC & "," & id_nuocSX & ",'" & Text2.Text & "'," & TDBDate1.Text & ",'" & Combo2.Text & "','" & Combo1.Text & "')"

báo lỗi:
Conversion failed when converting datatime forr character string
ghi chú: trường ngaymua trong CSDL SQL em để dạng datatime
các bác HD em xử lý ntn? kinh nghiệm thì trường ngày tháng trong CSDL SQL2005 sử dụng định dạng nào (nvarchar, datetime...?)
em cảm ơn các bác.
baoho1977
Thành viên chính thức
Thành viên chính thức
Posts: 41
Joined: Wed 25/05/2011 9:42 am
Has thanked: 8 times

Re: xin hỏi VB6 và SQL server 2005

Post by baoho1977 »

Em chào buổi sáng các bác
Em "ngóng" mãi mà chả thấy bác nào giúp em. E "tạm" xử lý bằng cách sửa filed Ngaymua thành Nvarchar
Tuy nhiên, em vẫn mong nhận được sự chỉ giáo của các bác để cập nhật dữ liệu dạng Date vào CSDL sql Server (để tiện cho việc truy xuất dữ liệu sau này)
User avatar
gtdcomputer
Thành viên danh dự
Thành viên danh dự
Posts: 1296
Joined: Fri 18/07/2008 12:08 pm
Location: Kiên Giang
Has thanked: 8 times
Been thanked: 116 times
Contact:

Re: xin hỏi VB6 và SQL server 2005

Post by gtdcomputer »

Chào bạn!
Theo mình nhớ (đã lâu ko đụng vào vb ;v) Thì control TBDate.Text trả về 1 chuỗi, ở đây nó chỉ lấy đc tháng vì nó nằm trên caption. Để lấy biến ngày tháng thì phải dùng TBDate.Value hoặc cái gì đó tương tự =))
Việc insert ngày tháng vào Database cũng hơi phức tạp. Đa số ứng dụng chỉ sử dụng TIMESTAMP để lấy ngày hiện tại. Chứ ko nhập trực tiếp từ ứng dụng.
Theo mình nhớ thì để insert ngày tháng trực tiếp thì bạn phải convert ngày tháng về định dạng yyyy-mm-dd kiểu
  1. cn.excute "INSERT INTO table1(ngay) VALUES('"& Format(BienDate,"yyyy-mm-dd") &')"
Con người không quan tâm đến sự thật. Họ tin cái họ muốn, và về sau, cái đó sẽ trở thành sự thật
baoho1977
Thành viên chính thức
Thành viên chính thức
Posts: 41
Joined: Wed 25/05/2011 9:42 am
Has thanked: 8 times

Re: xin hỏi VB6 và SQL server 2005

Post by baoho1977 »

Trước tiên xin cảm ơn GTDComputer đã chỉ giáo.
mình đã thử TDBDate.values rồi không được, đồng thời dữ liệu ngày tháng của mình phải nhâp(hoặc chọn) bằng tay
Để mình thử lại cách của bạn xem : forrmat(.....,"yyyy-mm-dd") =D> .
Một lần nữa cảm ơn bạn
Mong nhận được sự chỉ giáo nhiều hơn của các bạn?
User avatar
vietteiv
Quản trị
Quản trị
Posts: 1325
Joined: Sat 10/02/2007 12:17 am
Location: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 times
Been thanked: 70 times
Contact:

Re: xin hỏi VB6 và SQL server 2005

Post by vietteiv »

lần 1, lần 2 và lần thứ n của bạn chắc chắn sẽ sai vì lỗi cơ bản nằm ở câu sql
sql_u = "insert into tblDMMaytinh(idmaytinh,idnhaCC,idnuocSX,maMT,chungloai,ngaymua,tinhtrang)
values(" & Val(Text1.Text) & "," & id_nhaCC & "," & id_nuocSX & ",'" & Text2.Text & "'," & TDBDate1.Text & ",'" & Combo2.Text & "','" & Combo1.Text & "')"
bạn nhìn lại xem có phải trường ngaymua lấy dữ liệu từ Combo2.Text không?
baoho1977
Thành viên chính thức
Thành viên chính thức
Posts: 41
Joined: Wed 25/05/2011 9:42 am
Has thanked: 8 times

Re: xin hỏi VB6 và SQL server 2005

Post by baoho1977 »

một lần nữa cũng xin cảm ơn bạn Viettiew đã nhắc: OK.
Tôi đã thử theo cách của GDTcomputer và insert tốt--> để format(..."dd/mm/yyy") vẫn OK (tôi sẽ dùng DTpicker cho tiện), đang định vào trả lời thì thấy bài của Viettiew--> đúng là câu lệnh của tôi có vấn đề
Một lần nữa xin cảm ơn 2 bạn
boy1234
Guru
Guru
Posts: 448
Joined: Mon 13/10/2008 3:12 pm
Location: Dĩ An - Bình Dương
Been thanked: 32 times

Re: xin hỏi VB6 và SQL server 2005

Post by boy1234 »

Trước mình ưa viết câu sql trực tiếp để dùng Insert, Update... Nhưng ưa bị lủng lắm, mà mò nó ghét nhất là dấu nháy tìm mỏi mắt lại thêm kiểu dữ liệu ngày tháng thì rất dể đuối => dể dẫn đến sửa đổi cấu trúc các fields trong Database lắm :( :( Nếu dùng nhiều mình thấy nên viết Procedure dể test từ database và đỡ phải mò vừa code trên vb vừa tìm xem dưới database có vấn đề gì không!!

@Viettev: Hì hì lâu lắm mới gặp trên đây... =D> =D>
Dạo này nghiện honda SS50
Post Reply

Return to “Visual Basic 6 và Visual Basic Script (VB & VBS)”