已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
反映:Option Explicit- 接続先設定-Private Sub cmdConnect_Click() frmPass.Show vbModalEnd Sub-Private Sub cmdExec_Click() Dim i, j As Long Dim sWorksheetNm As String 反映名 Dim objSheet As Object 処理対象 Dim objCopy As Object 対象 Dim objLastSheet As Object 最終 Dim lRowCount As Long 数 Dim bSheetCKFlg As Boolean Dim lSetCnt As Long 名設定 Dim vRet As Long 戻値 Dim objRecset As OraDynaset Dim myDictionary As Object Dim iMsgRet As Integer Dim sSortKey As String Dim lCreateSheetsF As Long Dim lMultiFlg As Long Dim sTableName(9) As String On Error GoTo ERR_SUB Application.ScreenUpdating = False 更新件数取得 gsMAX_RECORD = ThisWorkbook.Worksheets(接続文字列).Range(B4).Value - 反映 - 生成 Set objSheet = ThisWorkbook.Worksheets(反映) LCH ADD 番号取得 order_NUM = Trim(objSheet.Range(H6).Value) 必須項目 If order_NUM = Then MsgBox 番号入力下。 GoTo EXIT_SUB End If 必須項目 If Trim(objSheet.Range(C25).Value) = Then MsgBox 取込入力下。 GoTo EXIT_SUB End If lMultiFlg = 0 If Trim(objSheet.Range(D25).Value) Then sTableName(0) = Trim(objSheet.Range(C25).Value) sTableName(1) = Trim(objSheet.Range(D25).Value) sTableName(2) = Trim(objSheet.Range(E25).Value) sTableName(3) = Trim(objSheet.Range(F25).Value) sTableName(4) = Trim(objSheet.Range(G25).Value) sTableName(5) = Trim(objSheet.Range(H25).Value) sTableName(6) = Trim(objSheet.Range(I25).Value) sTableName(7) = Trim(objSheet.Range(J25).Value) sTableName(8) = Trim(objSheet.Range(K25).Value) sTableName(9) = Trim(objSheet.Range(L25).Value) lMultiFlg = 1 Else 反映名取得 sWorksheetNm = Trim(objSheet.Range(C25).Value) sTableName(0) = Trim(objSheet.Range(C25).Value) End If 解放 Set objSheet = Nothing If lMultiFlg = 0 Then (存在場合作成) lCreateSheetsF = 0 If chkSheet(sWorksheetNm) = True Then iMsgRet = MsgBox(既存在。新規作成宜?, vbQuestion + vbYesNoCancel) If iMsgRet = vbYes Then 生成 With ThisWorkbook Application.DisplayAlerts = False .Worksheets(sWorksheetNm).Delete Application.DisplayAlerts = True End With ElseIf iMsgRet = vbNo Then lCreateSheetsF = 1 Else Exit Sub End If End If Else iMsgRet = MsgBox(複数読込、宜?, vbQuestion + vbYesNo) If iMsgRet = vbYes Then Else Exit Sub End If End If DB接続 vRet = DBConnect() Select Case vRet Case -1 MsgBox DB接続 GoTo EXIT_SUB Case -2 MsgBox 接続文字列 GoTo EXIT_SUB End Select - 原紙 - For i = 0 To UBound(sTableName) If Trim(sTableName(i) Then If chkSheet(sTableName(i) = False Then 生成 Set objCopy = ThisWorkbook.Worksheets(原紙) objCopy.Visible = True 最終取得 With ThisWorkbook Set objLastSheet = .Worksheets(.Worksheets(.Worksheets.Count).Name) End With 作成 objCopy.Copy After:=objLastSheet Set objLastSheet = Nothing 解放 objCopy.Visible = False Set objCopy = Nothing 名設定 ThisWorkbook.ActiveSheet.Name = sTableName(i) End If - 作成反映 - 生成 Set objCopy = ThisWorkbook.Worksheets(sTableName(i) - 設定 - 名 objCopy.Range(B1).Value = sTableName(i) 取得 vRet = getDBInfo(sTableName(i), objRecset, myDictionary) If vRet 0 Then GoTo EXIT_SUB End If If objRecset.RecordCount 65536 Then MsgBox 件数、65536件以上。条件絞検索下。 GoTo EXIT_SUB End If objCopy.Range(objCopy.Cells(5, 2), objCopy.Cells(gsMAX_RECORD, objRecset.Fields.Count + 3).ClearContents 表示 lSetCnt = 3 objCopy.Activate For j = 0 To objRecset.Fields.Count - 1 PK If myDictionary.Exists(CStr(objRecset.Fields(j).Name) = True Then objCopy.Cells(1, lSetCnt).Value = PK End If objCopy.Cells(2, lSetCnt).Value = objRecset.Fields(j).Name 名 objCopy.Cells(3, lSetCnt).Value = objRecset.Fields(j).Name 名 objCopy.Cells(4, lSetCnt).Value = ConvType(objRecset.Fields(j).OraIDataType) lSetCnt = lSetCnt + 1 Next j 表示 vRet = DispData(objCopy, objRecset) Set objRecset = Nothing Set objCopy = Nothing End If Next i Call DBClose ThisWorkbook.Worksheets(sTableName(0).Activate Application.ScreenUpdating = True Exit SubERR_SUB: MsgBox Err.Number & : & Err.Description EXIT_SUB: Application.ScreenUpdating = True DB切断 Call DBCloseEnd SubPrivate Function chkSheet(ByVal sSheetsName As String) As Boolean Dim i As Long 反映存在 With ThisWorkbook chkSheet = False For i = 1 To .Worksheets.Count If .Worksheets(i).Name = sSheetsName Then chkSheet = True Exit For End If Next i End WithEnd FunctionPrivate Sub cmdGetInfo_Click() Dim i, j As Long Dim sSQL As String SQL文 Dim objSheet As Object 処理対象 Dim objCopy As Object 対象 Dim objLastSheet As Object 最終 Dim lRowCount As Long 数 Dim bSheetCKFlg As Boolean Dim lSetCnt As Long 名設定 Dim vRet As Long 戻値 Dim objRecset As OraDynaset Dim myDictionary As Object Dim iMsgRet As Integer Dim sSortKey As String Dim sInterfaceId As String ID On Error GoTo ERR_SUB Application.ScreenUpdating = False 生成 Set objSheet = ThisWorkbook.Worksheets(反映) DB接続 vRet = DBConnect_Com() Select Case vRet Case -1 MsgBox DB接続 GoTo EXIT_SUB Case -2 MsgBox 接続文字列 GoTo EXIT_SUB End Select 基本情報取得 If Trim(objSheet.Cells(6, 3) Then sInterfaceId = Split(Trim(objSheet.Cells(6, 3), :)(0) Else sInterfaceId = End If sSQL = SELECT IF_TABLE_NAME FROM TB_BLS_META_INFO WHERE INTERFACE_ID = & sInterfaceId & GROUP BY IF_TABLE_NAME vRet = SelectData(sSQL, objRecset) If vRet 0 Then GoTo ERR_SUB End If If vRet 0 Then GoTo EXIT_SUB End If If objRecset.RecordCount 10 Then MsgBox 件数、10件以上。確認下。 GoTo EXIT_SUB End If 初期化 For i = 3 To 12 objSheet.Cells(25, i) = objSheet.Cells(41, i) = Next i For j = 0 To objRecset.RecordCount - 1 objSheet.Cells(25, j + 3) = objRecset.Fields(objRecset.Fields(0).Name) objSheet.Cells(41, j + 3) = objSheet.Cells(25, j + 3) objRecset.MoveNext Next j Set objRecset = Nothing Set objSheet = Nothing Call DBClose Application.ScreenUpdating = True Exit SubERR_SUB: MsgBox Err.Number & : & Err.Description EXIT_SUB: Application.ScreenUpdating = True DB切断 Call DBCloseEnd SubPrivate Sub cmdSQL_Click() Dim i, j As Long Dim objExcel As Object Excel Dim sITEM_SQL As String INSERTSQL(ITEM部分) Dim sVALUE_SQL As String INSERTSQL(VALUE部分) Dim sMAIN_SQL As String INSERTSQL(結合) Dim lColCnt As Long 作成 Dim sFilePath As String 出力 Dim objFs As Object Dim objFile As Object Dim sTitle As String Dim vRet As Long Dim sDELETSQL As String Dim sDelWhere As String Dim sUPDATESQL As String Dim sUpdWhere As String Dim objRegData As Object 登録済 Dim myDictionary As Object Dim objRecset As OraDynaset Dim objSheet As Object 処理対象 Dim lUpCnt As Long DB接続 vRet = DBConnect() Select Case vRet Case -1 MsgBox DB接続 Exit Sub Case -2 MsgBox 接続文字列 Exit Sub End Select Call DBBeginTrans 番号取得 order_NUM = Trim(ThisWorkbook.Worksheets(反映).Range(H6).Value) 更新件数取得 gsMAX_RECORD = ThisWorkbook.Worksheets(接続文字列).Range(B4).Value Set objRegData = CreateObject(Scripting.Dictionary) lUpCnt = 0 存在分作成。 With ThisWorkbook For i = 1 To .Worksheets.Count 登録指定場合指定登録。 If Trim(.Worksheets(反映).Range(C41).Value) Or _ Trim(.Worksheets(反映).Range(D41).Value) Or _ Trim(.Worksheets(反映).Range(E41).Value) Or _ Trim(.Worksheets(反映).Range(F41).Value) Or _ Trim(.Worksheets(反映).Range(G41).Value) Or _ Trim(.Worksheets(反映).Range(H41).Value) Or _ Trim(.Worksheets(反映).Range(I41).Value) Or _ Trim(.Worksheets(反映).Range(J41).Value) Or _ Trim(.Worksheets(反映).Range(K41).Value) Or _ Trim(.Worksheets(反映).Range(L41).Value) Then If Trim(.Worksheets(反映).Range(C41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(D41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(E41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(F41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(G41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(H41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(I41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(J41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(K41).Value) .Worksheets(i).Name And _ Trim(.Worksheets(反映).Range(L41).Value) .Worksheets(i).Name Then GoTo NO_DATA End If End If 対象生成 Set objExcel = .Worksheets(.Worksheets(i).Name) 処理 If Trim(objExcel.Cells(3, 2).Value) Then vRet = ExecuteData(delete from & Trim(objExcel.Cells(1, 2).Value) & where ORD_NUM = & order_NUM & ) If vRet 0 Then GoTo ERR_DB End If End If If objExcel.Cells(Rows.Count, 2).End(xlUp).Row - 5 2499 Then sITEM_SQL = sITEM_SQL & vbCrLf End If If sITEM_SQL = Then sITEM_SQL = objExcel.Cells(3, 3 + lColCnt).Value Else sITEM_SQL = sITEM_SQL & , & objExcel.Cells(3, 3 + lColCnt).Value End If lColCnt = lColCnt + 1 Loop 部分 For j = 5 To gsMAX_RECORD 入力部分 If Trim(objExcel.Cells(j, 2).Value) Then If Trim(objExcel.Cells(j, 2).Value) D Then lColCnt = 0 sVALUE_SQL = Do If Trim(objExcel.Cells(3, 3 + lColCnt).Value) = Then Exit Do If sVALUE_SQL Then sVALUE_SQL = sVALUE_SQL & , End If 桁数 If Len(sVALUE_SQL) 2400 Then sVALUE_SQL = sVALUE_SQL & vbCrLf End If 生成 Select Case UCase(Trim(objExcel.Cells(4, 3 + lColCnt).Value) Case CHAR, VARCHAR2 If Trim(objExcel.Cells(j, 3 + lColCnt).Value) Then If Trim(objExcel.Cells(j, 3 + lColCnt).Value) = NULL Then sVALUE_SQL = sVALUE_SQL & null Else sVALUE_SQL = sVALUE_SQL & & objExcel.Cells(j, 3 + lColCnt).Value & End If Else sVALUE_SQL = sVALUE_SQL & End If Case TIMESTAMP sVALUE_SQL = sVALUE_SQL & SYSTIMESTAMP Case DATE If Trim(objExcel.Cells(j, 3 + lColCnt).Value) Then If Trim(objExcel.Cells(j, 3 + lColCnt).Value) = NULL Then sVALUE_SQL = sVALUE_SQL & null Else sVALUE_SQL = sVALUE_SQL & TO_DATE( & Format(CDate(Trim(objExcel.Cells(j, 3 + lColCnt).Value), yyyy/mm/dd) & , YYYY/MM/DD) End If Else sVALUE_SQL = sVALUE_SQL & SYSDATE End If Case Else If Trim(objExcel.Cells(j, 3 + lColCnt).Value) Then If Trim(objExcel.Cells(j, 3 + lColCnt).Value) = NULL Then sVALUE_SQL = sVALUE_SQL & null Else sVALUE_SQL = sVALUE_SQL & objExcel.Cells(j, 3 + lColCnt).Value End If Else sVALUE_SQL = sVALUE_SQL & 0 End If End Select lColCnt = lColCnt + 1 Loop 文字列結合 sMAIN_SQL = sMAIN_SQL = INSERT INTO & Trim(objExcel.Cells(1, 2).Value) & ( & sITEM_SQL & ) _ & vbCrLf & VALUES( & sVALUE_SQL & ) vRet = ExecuteData(sMAIN_SQL) If vRet 0 Then objExcel.Cells(j, 1).Value = sMAIN_SQL GoTo ERR_DB End If 追加件数 lUpCnt = lUpCnt + vRet Else End If 登録確保 If objRegData.Exists(CStr(i) = False Then objRegData.Add CStr(i), Trim(objExcel.Cells(1, 2).Value) End If End If Next jNO_DATA: Next i End With Call DBCommitTrans 登録後検索 If ThisWorkbook.Worksheets(反映).Range(C39).Value Then GoTo DB_CLOSE End If - 出力再読込 - Dim sTableKeys() As Variant sTableKeys = objRegData.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车发动机活塞拆装实训方案
- 制造企业库存盘点管理方案
- HDPE管安装专项施工方案(无图)
- 有限空间作业事故应急演练方案
- 线上播音比赛活动方案
- 2023产科护理质量管理计划
- 环保项目环境影响评价合同范本
- 线上教育平台作业批改标准
- 消防灭火器材使用及维护培训
- 古诗文《采薇》赏析及教学思路
- 辽宁省大连市金普新区2024-2025学年七年级上学期期中质量检测地理试卷(含答案)
- 食品添加剂:面粉处理剂
- 人教版道德与法治九年级上册复习课件:第四单元和谐与梦想(共66张)
- Unit 3 Conservation Lesson 2 War on Plastic Packets 教学设计-2023-2024学年高中英语北师大版(2019)选择性必修第一册
- 《信息技术基础实训(WPS Office)》课件 实训项目1 认识和使用计算机系统
- 2024年新人教版七年级上册道德与法治全册教案
- 西门子S7-1200 PLC编程及应用教程 第3版 课件 侍寿永 第1-3章 基本指令的编程及应用-函数块与组织块的编程及应用
- 人教版九年级单词默写汉译英打印版
- 品管圈-提高预防跌倒坠床措施课件
- 社区安全生产培训会
- 信息工程结算书
评论
0/150
提交评论