VBA, VB.NET For Creo

Creo Parameter <=> PostgreSQL Table #5

ToolBOX01 2025. 1. 2. 17:03
반응형

기존 데이터를 업데이트 하기

기본 코드

Sub UpdateDataInPostgreSQL()
    Dim conn As Object
    Dim query As String
    Dim lastRow As Long
    Dim i As Long

    ' PostgreSQL ODBC 연결 문자열
    Dim connectionString As String
    connectionString = "Driver={PostgreSQL Unicode(x64)};" & _
                       "Server=localhost;" & _
                       "Port=5432;" & _
                       "Database=creomodel01;" & _
                       "Uid=postgres;" & _
                       "Pwd=****;" ' 비밀번호 입력

    ' ODBC 연결 열기
    Set conn = CreateObject("ADODB.Connection")
    On Error GoTo ErrorHandler
    conn.Open connectionString

    ' 데이터 업데이트
    With ThisWorkbook.Sheets("Sheet1")
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row ' A열 기준 마지막 데이터 행 찾기

        For i = 2 To lastRow ' 데이터가 2행부터 시작한다고 가정 (1행은 헤더)
            Dim id As String
            Dim modelname As String
            Dim modeltype As String
            Dim modellocation As String
            Dim status As String

            ' 셀 데이터 읽기
            id = .Cells(i, 1).Value ' 업데이트할 레코드의 고유 ID
            modelname = Replace(.Cells(i, 2).Value, "'", "''") ' 특수문자 이스케이프
            modeltype = Replace(.Cells(i, 3).Value, "'", "''")
            modellocation = Replace(.Cells(i, 4).Value, "'", "''")
            status = IIf(.Cells(i, 7).Value = 1, "TRUE", "FALSE") ' Boolean 변환

            ' SQL 쿼리 작성 (기존 레코드 업데이트)
            query = "UPDATE ""DesignTeam"".""modelinfo"" SET " & _
                    "modelname = '" & modelname & "', " & _
                    "modeltype = '" & modeltype & "', " & _
                    "modellocation = '" & modellocation & "', " & _
                    "status = " & status & " " & _
                    "WHERE id = " & id & ";"

            ' 디버그용 쿼리 출력
            Debug.Print query

            ' SQL 실행
            conn.Execute query
        Next i
    End With

    ' 연결 닫기
    conn.Close
    Set conn = Nothing
    MsgBox "데이터베이스가 성공적으로 업데이트되었습니다."
    Exit Sub

ErrorHandler:
    MsgBox "오류 발생: " & Err.Description, vbCritical
    If Not conn Is Nothing Then conn.Close
    Set conn = Nothing
End Sub