Hallo Hammel,
versuch's doch mal damit:
Function zice32()
On Error Resume Next
Set recInfo=Installer.CreateRecord(1)
If Err <> 0 Then
zice32 = 1
Exit Function
End If
'Give description of test
recInfo.StringData(0)="zice32" & Chr(9) & "3" & Chr(9) & "zice32 - Confirms" & _
"that keys and foreign keys are the same type/size"
Message &h03000000, recInfo
'Give creation data
recInfo.StringData(0)="zice32" & Chr(9) & "3" & Chr(9) & "Created 07/30/98." & _
"Last Modified 10/08/98."
Message &h03000000, recInfo
Set msiDB = Session.Database
Set msiTablesView = msiDB.OpenView("SELECT * FROM 'CustomAction' WHERE" & _
"'Action' = 'Call_EditRightFile'")
msiTablesView.Execute
If Err <> 0 Then
recInfo.StringData(0)="zice32" & Chr(9) & "0" & Chr(9) & "view.Execute_1 API" _
& _
"Error: " & Err
Message &h03000000, recInfo
zice32=1
Exit Function
End If
Set msiTablesRecord = msiTablesView.Fetch
Do Until msiTablesRecord Is Nothing
sThisTable = msiTablesRecord.StringData(1)
sThisColumn = msiTablesRecord.StringData(2)
sKeyTables = msiTablesRecord.StringData(6)
'Is this table in the database?
iStat = Database.TablePersistent(sThisTable)
If 1 = iStat Then
If Len(sKeyTables) > 0 Then
iKeyColumn = msiTablesRecord.IntegerData(7)
Set msiForeignView = msiDB.OpenView("SELECT '" & sThisColumn & "' FROM '" & _
sThisTable & "'")
msiForeignView.Execute
Set msiForeignInfo = msiForeignView.ColumnInfo(1)
iDelim = InStr(sKeyTables & ";", ";")
sKeyTable = Left(sKeyTables & ";", iDelim - 1)
While Len(sKeyTable) > 0
'Is this table in the database?
iStat = Database.TablePersistent(sKeyTable)
If 1 <> iStat Then
recInfo.StringData(0)="zice32" & Chr(9) & "3" & Chr(9) & sKeyTable & "" & _
"table is not in database, but is listed in the CustomAction table as a" & _
"foreign key of " & sThisTable & "." & sThisColumn & Chr(9) & "" & Chr(9) & _
"CustomAction"
Message &h03000000, recInfo
Else
Set msiKeyView = msiDB.OpenView("SELECT * FROM '" & sKeyTable & "'")
msiKeyView.Execute
If Err <> 0 Then
recInfo.StringData(0)="zice32" & Chr(9) & "0" & Chr(9) & _
"view.Execute_2" & _
"API Error in table " & sKeyTable & " Error: " & _
Installer.LastErrorRecord.StringData(1)
Message &h03000000, recInfo
zice32=1
Exit Function
End If
Set msiKeyInfo = msiKeyView.ColumnInfo(1)
If LCase(msiKeyInfo.StringData(iKeyColumn)) <> LCase( _
msiForeignInfo.StringData(1)) Then
recInfo.StringData(0) = "zice32" & Chr(9) & "1" & Chr(9) & "Possible" & _
"Mis-Aligned Foreign Keys" & Chr(10) & _
sKeyTable & "." & iKeyColumn & " = " & _
msiKeyInfo.StringData(iKeyColumn) & Chr(10) & _
sThisTable & "." & sThisColumn & " = " & _
msiForeignInfo.StringData(1) & Chr(9) & "" & Chr(9) & "CustomAction"
Message &h03000000, recInfo
bDifference = True
End If
End If
iDelim = InStr(sKeyTables, ";")
If iDelim > 0 Then
sKeyTables = Mid(sKeyTables, iDelim + 1)
iDelim = InStr(sKeyTables & ";", ";")
sKeyTable = Left(sKeyTables & ";", iDelim - 1)
Else
sKeyTable = ""
End If
Wend
End If
End If
Set msiTablesRecord = msiTablesView.Fetch
Loop
recInfo.StringData(0) = "zice32" & Chr(9) & "3" & Chr(9) & "Differences found" _
& _
"= " & UCase(CStr(bDifference))
Message &h03000000, recInfo
'Return iesSuccess
zice32 = 1
Exit Function
End Function Ich hab's hier jetzt zwar nicht ausprobieren können, aber es könnte sein, dass die Hochkommata nicht in Ordnung waren 
ciao
Elwood
Wer sp?ter bremst, ist l?nger schnell |