Trao đổi về việc sử dụng sử dụng công nghệ ADO.NET để thao tác với CSDL, sử dụng các controls giúp hiện dữ liệu (GridView, Repeater,..) và các control lưu trữ nguồn dữ liệu (ObjectDataSource, SqlDataSource,…)
Điều hành viên: tungcan5diop
gửi bởi dinhquyhcct » T.Bảy 24/07/2010 9:04 pm
Mình đang viết chương trình cần Insert dữ liệu từ file Excel vào CSDL access. Mục đích là để nhập cho nhanh đó mà. Mình dùng ADO net lấy dữ liệu file excel vào DataSet (ds1), lấy dữ liệu CSDL access vào DataSet (ds2) rồi add từng dòng dữ liệu của (ds1) sang (ds2), sau đó dùng oledbCommandBuilder dể update ds2. Nhưng khi chạy chương trình bị lỗi tại dòng da.Update(ds2.Tables(0)). Lỗi:Syntax error in INSERT INTO statement.
Nhờ các bạn giúp sữa lỗi hoàn thiện cho chương trình.
Mình gữi kèm theo chương trình. (chương trình mình dùng VB 2008)
-
dinhquyhcct
- Thành viên chính thức

-
- Bài viết: 10
- Ngày tham gia: T.Năm 10/04/2008 10:05 am
gửi bởi ngocvinh » CN 25/07/2010 9:57 am
Bạn tham khảo cách của mình cho nhanh mình chay thử 22000 dong trong vong 40s CPU Pentium E2160 .Minh nghi ban sẽ làm được
Using vbnet Syntax Highlighting
'Import data to sql
Private Sub Button1_Click
(ByVal sender
As System.
Object,
ByVal e
As System.
EventArgs) Handles Button1.
Click
Dim i
As Integer
If CBOworkoder.
Text = "" Then
MsgBox("Chua co work oder")
Exit Sub
End If
Try
OpenFile.
Filter = "Excel (*.xls)|*.xls|All files (*.*)|*.*"
OpenFile.
ShowDialog()
Dim F
As String = OpenFile.
FileName.
ToString()
If F
= "" Then
Exit Sub
End If
'Dim excelConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & F & ";Extended Properties=""Excel 11.0;HDR=YES;"""
Dim excelConnectionString
As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & F
& ";Extended Properties=Excel 8.0;" & "Persist Security Info=False"
Dim da
As New OleDbDataAdapter
tam
= New DataTable
Dim Connection
As New OleDbConnection
Connection.
ConnectionString = excelConnectionString
Connection.
Open()
'MsgBox("OK")
Dim Command1
As New OleDbCommand
("Select Data FROM [Sheet1$]", Connection
)
da.
SelectCommand = Command1
da.
Fill(tam
)
MsgBox("Số dòng cần Import vào là " & tam.
Rows.
Count, ,
"Thông báo")
Catch ex
As Exception
MsgBox(ex.
ToString)
'MsgBox("File không chứa dữ liệu như yêu cầu ", , "Thông báo")
Exit Sub
End Try
Try
Command = New SqlCommand
Command.
Connection = dbs
For i
= 0
To tam.
Rows.
Count - 1
Command.
CommandText = " insert into WAREHOUSE(WORK_ODER,SERIAL_NUMBER,OPERATOR,DATE) values( '" & CBOworkoder.
Text & "','" & tam.
Rows(i
)("Data") & "','" & user
& "','" & Now() & "')"
Command.
ExecuteNonQuery()
Next
MsgBox("Done")
Catch ex
As Exception
'MsgBox(ex.ToString)
MsgBox("Data bị trùng lặp Chương trình sẽ dừng tại dòng: " & tam.
Rows(i
)("Data"), ,
"Thông báo")
End Try
End SubParsed in 0.028 seconds, using
GeSHi 1.0.8.4
-
ngocvinh
- Thành viên tích cực

-
- Bài viết: 118
- Ngày tham gia: T.Tư 23/04/2008 8:14 am
- Đến từ: Biên Hòa Đồng Nai
gửi bởi ngocvinh » T.Hai 26/07/2010 8:06 am
Trong CSDL File Access cot 'DAY' sửa tên lại thành tên khác đi vì trùng với tên hệ thống là 'Ngày' nên không Update được .Có hai cách Import bên dưới đều chạy được mình đả Tets trên vs2005,bạn nên kiễm tra tên colurm trong bảng Access
Using vbnet Syntax Highlighting
Private Sub Button3_Click
(ByVal sender
As System.
Object,
ByVal e
As System.
EventArgs) Handles Button3.
Click
' If (ds1.Tables(0).Rows.Count < 1) Then
'MsgBox("co gi dau ma nhap")
' Exit Sub
' End If
' Dim mAccessFile As String = Application.StartupPath & "\DBPHIT.mdb"
' conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mAccessFile & ";")
' conn.Open()
' Command.Connection = conn
' i = 0
' For i As Integer = 0 To ds1.Tables(0).Rows.Count - 1
'Command.CommandText = " insert into PHIT(TT,KH,SHD,DCHI,SHO,LT,PHIEN,MANG,MATBA,SOCT,LOAICT,GIA,PHA,[DAY],I,V,NSX) values( '" & ds1.Tables(0).Rows(i)("TT") & "' ,'" & ds1.Tables(0).Rows(i)("KH") & "','" & ds1.Tables(0).Rows(i)("SHD") & "','" & ds1.Tables(0).Rows(i)("DCHI") & "','" & ds1.Tables(0).Rows(i)("SHO") & "','" & ds1.Tables(0).Rows(i)("LT") & "','" & ds1.Tables(0).Rows(i)("PHIEN") & "','" & ds1.Tables(0).Rows(i)("MANG") & "','" & ds1.Tables(0).Rows(i)("MATBA") & "','" & ds1.Tables(0).Rows(i)("SOCT") & "','" & ds1.Tables(0).Rows(i)("LOAICT") & "','" & ds1.Tables(0).Rows(i)("GIA") & "','" & ds1.Tables(0).Rows(i)("PHA") & "','" & ds1.Tables(0).Rows(i)("DAY") & "','" & ds1.Tables(0).Rows(i)("I") & "','" & ds1.Tables(0).Rows(i)("V") & "','" & ds1.Tables(0).Rows(i)("NSX") & "') "
' TextBox1.Text = i
'Command.ExecuteNonQuery()
' Next
' Dim sql = "Select * from PHIT"
' Command.CommandText = sql
' da = New OleDbDataAdapter
' da.SelectCommand = Command
' da.Fill(TB1) 'TB1 as Datatable
' Me.DataGridView2.DataSource = TB1
If DataGridView1.
RowCount = 0 Or DataGridView2.
RowCount = 0
Then
MsgBox("Chua mo csdl ")
Exit Sub
End If
For Each dr
As DataRow In ds1.
Tables(0
).
Rows
Dim drnew
As DataRow
= ds2.
Tables(0
).
NewRow
For i
As Integer = 0
To ds1.
Tables(0
).
Columns.
Count - 1
drnew.
Item(i
) = dr.
Item(i
)
Next
ds2.
Tables(0
).
Rows.
Add(drnew
)
Next
Me.
DataGridView2.
DataSource = ds2
' Me.DataGridView2.DataMember = "TablePHIT"
da.
Update(ds2.
Tables(0
))
TextBox1.
Text = ds2.
Tables(0
).
Rows.
Count
End Sub
Parsed in 0.021 seconds, using
GeSHi 1.0.8.4
-
ngocvinh
- Thành viên tích cực

-
- Bài viết: 118
- Ngày tham gia: T.Tư 23/04/2008 8:14 am
- Đến từ: Biên Hòa Đồng Nai
gửi bởi dinhquyhcct » T.Tư 28/07/2010 10:14 am
Rất cám ơn ý kiến đóng góp nhiệt tình của bạn ngocvinh. Mình đã sữa lại và chương trình chạy tốt rồi.
-
dinhquyhcct
- Thành viên chính thức

-
- Bài viết: 10
- Ngày tham gia: T.Năm 10/04/2008 10:05 am
Quay về ADO.Net & Data Presentation Controls
Đang trực tuyến
Đang xem chuyên mục này: Không có thành viên nào trực tuyến. và 1 khách.