Noname > 10-09-15, 02:05 PM
Noname > 10-09-15, 02:06 PM
paulsteigel > 10-09-15, 02:06 PM
paulsteigel > 10-09-15, 02:09 PM
Private Function RetrieveInfor(xlsFileName As String, ObjName As Variant, _
Optional GetHeader As Boolean = False, Optional MSGCNT As Long, _
Optional MSG1 As String, Optional MSG2 As String, Optional UpdateRecordOnly = False) As BookmarkEnum
Dim wrdDocs As Object
Dim i As Long, StCell As Object, dbCell As Object, UnknownFileError As Boolean
Dim xlSheet As Object
Dim hdrRow As Long
' Determine sheet for recording based on some feature appear...
Dim ItemCount As Long, OldVersion As Boolean
ItemCount = UBound(ObjName)
' Open the file
On Error GoTo ErrHandler
Set wrdDocs = AppXls.GetOpenExcelFile(xlsFileName)
If wrdDocs Is Nothing Then GoTo ErrExit
' Just check for validity of the sheet
If Not IsObjectValid(Msg("DB_COND_CIG_1"), wrdDocs, True) Then GoTo ErrHandler
' old version of the form - needed some modification
If Not IsObjectValid("dbStart", wrdDocs) Then
' Check for further...
If IsObjectValid("txt_current_scale_1_2", wrdDocs) And Not IsObjectValid("txt_current_scale_1_2_1", wrdDocs) Then
OldVersion = True
Else
' unknown error
UnknownFileError = True
GoTo ErrHandler
End If
End If
' Ok now just copy across using the fieldMap table
Dim fldMap As New ADODB.Recordset, SqlTxt As String, SqlValue As String, SqlField, SqlVal As String, k As Long
Dim tblName As String ' Keeping table name
Dim CIG_ID As Long, UnitMass As String, UnitQTY As String
' For oldversion stuff
If OldVersion Then
UnitMass = Msg("MSG_OLD_MSR_UNIT_ALL")
UnitQTY = Msg("MSG_OLD_MSR_UNIT_KG")
End If
SqlTxt = "SELECT a.NameExcel, a.NameAccess, a.FieldType, a.InternalField, a.TableName, a.OldFieldType FROM tblFieldMap AS a " & _
"ORDER BY a.TableName, a.NameExcel;"
fldMap.Open SqlTxt, CurrentProject.Connection
SysCmd acSysCmdInitMeter, Replace(MSG1, "%%", MSG2 & "[" & wrdDocs.Name & "]"), MSGCNT
DoEvents
DoCmd.Hourglass True
' Now start preparing the CIG_profile table first
With fldMap
' Step 1... Profile only
While Not fldMap.EOF
' update progress
SysCmd acSysCmdUpdateMeter, k
If tblName <> "" And tblName <> .Fields("TableName") Then
If tblName = "tblCIGProfile" Then
' append document path
If SqlField <> "" Then
' Only apply with non-blank profile
SqlField = Mid(SqlField, 2) & ",document_path"
SqlValue = Mid(SqlValue, 2) & ",'" & xlsFileName & "'"
If UpdateRecordOnly Then
' Delete this record first
SqlTxt = "DELETE * FROM tblCIGProfile_ORG WHERE document_path='" & xlsFileName & "';"
CurrentDb.Execute SqlTxt
End If
SqlTxt = "INSERT INTO tblCIGProfile_ORG(" & SqlField & ") VALUES(" & SqlValue & ");"
CurrentDb.Execute SqlTxt
' Now Get CIG ID
CIG_ID = Nz(DMax("ID_CIG", "tblCIGProfile_ORG"), 1)
End If
Else
' Check if a field name is repeated then
SqlTxt = "INSERT INTO " & Left(tblName, Len(tblName) - 2) & "(ID_CIG" & SqlField & ") VALUES(" & CIG_ID & SqlValue & ");"
'Debug.Print SqlTxt
CurrentDb.Execute SqlTxt
' Do grouping...
DoGrouping CIG_ID
End If
' reset SQL variables
SqlTxt = ""
SqlField = ""
SqlValue = ""
End If
tblName = .Fields("TableName")
If Not .Fields("InternalField") Then
' only generate SQL with non-blank field
If IsValidRange(Nz(.Fields("NameExcel"), ""), wrdDocs) Then
SqlVal = Trim(wrdDocs.Names(CStr(.Fields("NameExcel"))).RefersToRange)
If SqlVal <> "" Then
SqlField = SqlField & "," & .Fields("NameAccess")
If .Fields("FieldType") = 10 Or .Fields("OldFieldType") = 10 Then
SqlValue = SqlValue & "," & "'" & StrQuoteReplace(SqlVal) & "'"
Else
SqlValue = SqlValue & "," & GetTextFormat(SqlVal)
End If
End If
End If
End If
fldMap.MoveNext
k = k + 1
Wend
End With
RetrieveInfor = True
ErrHandler:
Err.Clear
On Error Resume Next
wrdDocs.Close False
If UnknownFileError Then
MsgBox Replace(Msg("MSG_UNKNOWN_ERROR_DETECTED"), "%%", "[" & xlsFileName & "]"), vbCritical
End If
ErrExit:
Set xlSheet = Nothing
Set wrdDocs = Nothing
Debug.Print Err.Description
Err.Clear
DoCmd.Hourglass True
End Function
tranthanhan1962 > 10-09-15, 09:23 PM
Noname > 10-09-15, 11:58 PM
paulsteigel > 11-09-15, 01:03 PM
Noname > 07-12-16, 11:28 PM
Noname > 07-12-16, 11:31 PM
Noname > 07-12-16, 11:37 PM