Browse Source

this should take care of the sort order issue

master
Daniel Covington 2 weeks ago
parent
commit
05fe2049c0
4 changed files with 135 additions and 1 deletions
  1. +1
    -1
      Data/Proofs.rep
  2. +134
    -0
      Data/Update_Addresses.ps1
  3. BIN
      Dependancies/nircmd.exe
  4. BIN
      ImportService/TrackingDataImport.vbs

+ 1
- 1
Data/Proofs.rep View File

@@ -44,7 +44,7 @@ object TRpReport
'cords'#13#10#9#9#9' LEFT JOIN [KitLabels] ON InkjetRecords.KitLabelID = K' +
'itLabels.ID'#13#10#9#9#9' WHERE InkjetRecords.KitID = PBKITID AND InkjetR' +
'ecords.ID >= PBMIN and InkjetRecords.ID <= PBMAX) As [data] Orde' +
'r By SORT_ORDER'
'r By Clng(SORT_ORDER)'
end
item
Alias = 'JURISDICTION'


+ 134
- 0
Data/Update_Addresses.ps1 View File

@@ -0,0 +1,134 @@
# Define file paths
$excelFilePath = "C:\Users\danielc\Desktop\Changed Addrs12.xlsx"
$accessDbPath = "\\kci-app01\c$\inetpub\Data\webdata - Copy.mdb"
$tableName = "Jurisdiction"

# Open Excel file
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false # Set to $true if you want to see Excel open

$workbook = $excel.Workbooks.Open($excelFilePath)
$sheet = $workbook.Sheets.Item(1)

# Get Excel range
$usedRange = $sheet.UsedRange
$rowCount = $usedRange.Rows.Count
$colCount = $usedRange.Columns.Count

Write-Host "Total Rows: $rowCount, Total Columns: $colCount"

# Retrieve column headers (first row) & trim spaces
$headers = @()
for ($col = 1; $col -le $colCount; $col++)
{
$headers += ($sheet.Cells.Item(1, $col).Text).Trim()
}

# Print headers for debugging
Write-Host "Excel Headers Found: $($headers -join ', ')"

# Ensure necessary columns exist
$jcodeIndex = $headers.IndexOf("Jurisdiction Code")
$newAddIndex = $headers.IndexOf("New Add")
$newCityIndex = $headers.IndexOf("New city")
$newZipIndex = $headers.IndexOf("New Zip")

if ($jcodeIndex -eq -1 -or $newAddIndex -eq -1 -or $newCityIndex -eq -1 -or $newZipIndex -eq -1)
{
Write-Error "One or more required columns (Jurisdiction Code, New Add, New City, New Zip) not found in Excel."
$workbook.Close($false)
$excel.Quit()
exit
}

# Open Access Database
$connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$accessDbPath;"
$conn = New-Object -ComObject ADODB.Connection

try
{
$conn.Open($connectionString)
Write-Host "Connected to Access Database: $accessDbPath"
# Iterate through Excel rows and generate SQL updates
for ($row = 2; $row -le $rowCount; $row++)
{
# Read Jurisdiction Code and ensure zero-padded format
$rawJurisdictionCode = $sheet.Cells.Item($row, $jcodeIndex + 1).Text
if ($rawJurisdictionCode -match "^\d+$")
{
$jurisdictionCode = "{0:D5}" -f [int]$rawJurisdictionCode
}
else
{
Write-Host "Skipping row $row Invalid Jurisdiction Code '$rawJurisdictionCode'"
continue
}
# Read new address fields from Excel
$newAdd = $sheet.Cells.Item($row, $newAddIndex + 1).Text
$newCity = $sheet.Cells.Item($row, $newCityIndex + 1).Text
$newZip = $sheet.Cells.Item($row, $newZipIndex + 1).Text
# Generate CSZ (keeping the "-" in ZIP code)
$csz = "$newCity $newZip"
# Remove "-" from ZIP code for IMB_Digits
$cleanZip = $newZip -replace "-", ""
$imbDigits = "00778903419785000000$cleanZip"
if (-not $newAdd -and -not $newCity -and -not $newZip)
{
Write-Host "Skipping row $row No updates found for Mailing_Address, CSZ, IMB, or IMB_Digits."
continue
}
# Make API call to get IMB value
$apiUrl = "https://postalpro.usps.com/ppro-tools-api/imb/encode?imb=$imbDigits"
try
{
$response = Invoke-RestMethod -Uri $apiUrl -Method Get -Headers @{ "Accept" = "application/json" }
$imbValue = $response.imb
}
catch
{
Write-Host "Error retrieving IMB for row $row (Jurisdiction Code: $jurisdictionCode), using fallback IMB_Digits."
$imbValue = $imbDigits
}
# Escape SQL values
$newAddEscaped = $newAdd -replace "'", "''"
$cszEscaped = $csz -replace "'", "''"
$imbDigitsEscaped = $imbDigits -replace "'", "''"
$imbValueEscaped = $imbValue -replace "'", "''"
# Generate SQL Update statement
$updateSQL = "UPDATE [$tableName] SET [Mailing_Address] = '$newAddEscaped', [CSZ] = '$cszEscaped', [IMB] = '$imbValueEscaped', [IMB_Digits] = '$imbDigitsEscaped' WHERE [JCode] = '$jurisdictionCode';"
Write-Host "Executing: $updateSQL"
# Execute the SQL Update
$cmd = $conn.Execute($updateSQL)
}
}
catch
{
Write-Error "Error updating Access database: $_"
}
finally
{
# Close the Access database
$conn.Close()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($conn) | Out-Null
}

# Close Excel
$workbook.Close($false)
$excel.Quit()

# Release COM objects
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($sheet) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null

Write-Host "Excel and Access database update completed."

BIN
Dependancies/nircmd.exe View File


BIN
ImportService/TrackingDataImport.vbs View File


Loading…
Cancel
Save

Powered by TurnKey Linux.