2
« เมื่อ: 14 ก.พ. 62 , 17:00:45 »
ผมเขียน SQL ใน Access VB ผ่าน OraOLEDB เพื่อload data จากOracle มาเก็บไว้ใน Table ใน Access file โดยload แต่ละครั้งประมาณไม่ต่ำกว่า 2ล้าน records บางครั้งก็load ได้จนจบ บางครั้งก็เกิด error ตามนี้ครับ
Run-time error '3049' Cannot open database".It may not be a database that your application recognizes, or the file may be corrupt.
โค๊ดเริ่มต้นด้วย SQL ดึงข้อมูลมาแล้วมา AddNew ใส่ Table ขณะที่กำลัง AddNew นั้นมักจะ Error ครับ ไม่ทราบจะป้องกันอย่างไร ขอบคุณครับ
conn.ConnectionTimeout = 0
conn.Open "Provider=OraOLEDB.Oracle;User id=XXXX;Password=XXXX;Data Source=XXXdb1;FetchSize=250;CacheType=Memory"
sqlstr = "select W.*, T.MATL_TYPE_CD, S.SIZE_ABBREVIATION,B.PURCHASE_MAJOR_CLASS, B.PURCHASE_MINOR_CLASS" & vbLf & _
"from DA.ITEM_SIZE S, DA.MFG_PATH_BUY B, DA.MPS_ORDER_DETAIL W, DA.STYLE T" & vbLf & _
"where W.SIZE_CD = S.SIZE_CD AND W.DEP_STYLE = T.STYLE_CD AND B.STYLE_CD = W.DEP_STYLE AND B.SIZE_CD = W.DEP_SIZE_CD" & vbLf & _
"AND B.ATTRIBUTE_CD = W.DEP_ATTRIBUTE_CD AND B.COLOR_CD = W.DEP_COLOR AND B.PLANT_CD = W.DEP_PLANT "
p_rec.Open sqlstr, conn
If p_rec.EOF = False Then
Set rs = CurrentDb.OpenRecordset("OPEN_WORKORDER_DEMAND")
Do Until p_rec.EOF
rs.AddNew
rs!DETAIL_TYPE = p_rec!DETAIL_TYPE
rs!DEP_STYLE = p_rec!DEP_STYLE
rs!DEP_COLOR = p_rec!DEP_COLOR
rs!DEP_ATTRIBUTE_CD = p_rec!DEP_ATTRIBUTE_CD
rs!DEP_SIZE_CD = p_rec!DEP_SIZE_CD
rs!DEP_STYLE_17DIG = p_rec!DEP_STYLE & p_rec!DEP_COLOR & p_rec!DEP_ATTRIBUTE_CD & p_rec!DEP_SIZE_CD
rs!DEP_PLANT = p_rec!DEP_PLANT
rs!Style = p_rec!Style