The process cannot access the file '.xls' because it is being used by another process.
เปิด excel ค้างไว้อะดิ
Date :
2010-03-25 10:57:02
By :
tungman
ระบบเปิดค่ะ เราไม่ได้เปิดเอง เลยอยากทราบวิธีที่จะปิด excel ค่ะ
Date :
2010-03-25 11:12:46
By :
Angel_baba
เวลาตัวแรกมัน error ก็ close connection ตัวแรกก่อน
Date :
2010-03-25 11:20:55
By :
tungman
ตรวจสอบเรื่องต่อไปนี้
1. เปิด Excel ไว้หรือเปล่า ปิดให้หมด end process ใน task manager ด้วย
2. ใน โปรแกรม มีการ เปิด connection 2 รอบหรือเปล่า คุณลองไล่ code หรือ debug ดูครับ
ส่วนตัวผมว่า เป็นข้อสอง เนื่องจาก คุณอาจจะ loop program หรือ open excel ไว้หลายรอบ แล้วไม่ได้ปิด ถ้าคุณกลัวว่าเวลาเปิดไฟล์ หรือ connection แล้วไม่ได้ปิด ลองใช้ using ดูครับ
เช่น
using(SQLConnection conn = new SQLConnection())
{
//you coding...
}
Date :
2010-03-25 11:21:00
By :
numenoy
ใช้ vb.net นะค่ะ
เขียนปิดคอนเน็คชั่นแล้วแต่มันก็เหมือนเดิมเลยค่ะ เขียนแบบนี้ค่ะ แต่ว่าจิงๆมี 2 ซับนะค่ะ ยกตัวอย่างให้แค่ตัวเดียวค่ะ ไม่ทราบว่าผิดตรงไหนรึป่าวคะ
Sub Insert_ABCXYZ()
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & Server.MapPath("/ItemCode/ABCGroup.xls") & ";Extended Properties=Excel 8.0;"
objConn = New OleDbConnection(strConnString)
objConn.Open()
Try
strSQL = "SELECT * FROM [ABCXYZ$]"
dtAdapter = New OleDbDataAdapter(strSQL, objConn)
dtAdapter.Fill(dt)
Dim myDataSet As New DataSet("ABCXYZ")
dtAdapter.Fill(myDataSet, "ABCXYZ")
dview = myDataSet.Tables("ABCXYZ").DefaultView
Dim drowview As DataRowView
For Each drowview In dview
Dim Code = drowview.Item("Code")
Dim ABC = drowview.Item("ABC")
Dim XYZ = drowview.Item("XYZ")
' ///Insert MOR_ITEMCODE
sql = "Insert Into MOR_ItemCode (Code,ABC,XYZ)values(@Code,@ABC,@XYZ) "
cmd = New SqlCommand(sql, MConn)
cmd.Parameters.Add("@Code", SqlDbType.NVarChar).Value = Code
cmd.Parameters.Add("@ABC", SqlDbType.NVarChar).Value = ABC
cmd.Parameters.Add("@XYZ", SqlDbType.NVarChar).Value = XYZ
MConn.Open()
cmd.ExecuteNonQuery()
MConn.Close()
Next
Catch ex As Exception
Session.Contents("ErrorMSG") = "Please Check Error Message. (" & ex.Message & ")"
MConn.Close()
End Try
End Sub
Date :
2010-03-25 14:01:31
By :
Angel_baba
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & Server.MapPath("/ItemCode/ABCGroup.xls") & ";Extended Properties=Excel 8.0;"
objConn = New OleDbConnection(strConnString)
MConn = New OleDbConnection(strConnString) <<< ผมคาดว่าคุณใช้ strConnString ตัวเดียวกัน นั่นคือเปิดไฟล์ excel เดียวกัน
objConn.Open() <<< เปิดแล้วยังไม่ได้ปิด
MConn.Open() <<< เปิดอีกรอบ มันก็ Error สิครับ
Date :
2010-03-25 15:33:16
By :
numenoy
เอ่อ ไม่ใช่ค่ะ
objConn = New OleDbConnection(strConnString)
MConn = New SqlConnection
มันคือคนละตัวกันค่ะ เพราะ objconn จะใช้สำหรับเปิดไฟล์ excel ส่วน mconn จะใช้กระทำบางอย่างลง mssql ค่ะ
คือมันจะเกิด error นี้ตอนที่ เรากดปุ่มอัพเดตข้อมูลไปแล้ว 1 รอบ พอเกิด catch ขึ้นมา ระบบก็จะเด้งให้ brows ไฟล์ excel ใหม่ แล้วอัพโหลดไฟล์ excel ไปทับค่ะ
Date :
2010-03-25 16:44:32
By :
Angel_baba
ก่อนที่จะกดปุ่ม brows ให้เช็คว่ามีคอนเน็คชั่นเปิดอยู่หรือไม่ ถ้ามีให้ปิดก่อนที่จะทำการเปิดต่อไป
If objConn.State = ConnectionState.Open Then : objConn.Close() : End If
Date :
2010-03-26 16:35:16
By :
somooo
Load balance : Server 03