Avatar billede reds2001 Nybegynder
01. juli 2002 - 11:01 Der er 5 kommentarer og
2 løsninger

VB6 og Access2000

Hvordan sætter jeg properties i en Access2000 database fra min VB code?
Jeg ved at den her virker:
cat.Tables("Comp_Table").Columns("WNNX").Properties("Jet OLEDB:Allow Zero Length").Value = True
Men hvad med andre properties som required fields?????
Avatar billede terry Ekspert
01. juli 2002 - 11:20 #1
Avatar billede orca Nybegynder
01. juli 2002 - 11:44 #2
reds -> Et spørgsmål som dette bør ikke sættes til højere end 30 point.
Avatar billede reds2001 Nybegynder
01. juli 2002 - 12:04 #3
Terry>>Jeg har kigget linket igennem og mener ikke at kunne finde svar på mit spørgsmål. Lidt konkret kode ville udløse gevinsten på 200 point.
orca>>Hvorfor svarer du ikke på spørgsmålet og tjener 170 bonus point. Så skal jeg nok lade vær med at blande mig i hvad du vil bruge dem til.
Avatar billede terry Ekspert
01. juli 2002 - 12:26 #4
Private Sub Command1_Click()
    On Error GoTo ErrHandler            'Intercept any errors

Dim strConn        As String          'Work
Dim strDBPath      As String          'Path for new database
Dim DBCatalog      As ADOX.Catalog    'ADOX catalog reference
Dim DBTable        As ADOX.Table      'Database table definition
Dim DBColumn        As ADOX.Column      'Column object within a table
   
    strDBPath = "C:\TestDB.mdb"        'Path for database
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & ";"
   
    Set DBCatalog = New ADOX.Catalog    'Database root schema object
    DBCatalog.Create strConn            'Create new database

    Set DBTable = New ADOX.Table        'Create a new table object
    DBTable.Name = "TestTable"        'Set name of table
    Set DBTable.ParentCatalog = DBCatalog  'Make Properties collections available

    '---Create a column in the table...
    Set DBColumn = New ADOX.Column      'Column object to define
    With DBColumn                      'Reference new column
        .Name = "TestColumn"            'Name the column
        .Type = adInteger              'Type of data
        .DefinedSize = 0                'Normal size of data
        .Attributes = adColFixed        'Column attribute flags
        .NumericScale = 0              'Numeric scaling factor
        .Precision = 10                'Digits of Precision
    End With                            'Done with DBColumn reference

    DBTable.Columns.Append DBColumn    'Add column to table
       
End sub
Avatar billede terry Ekspert
01. juli 2002 - 12:34 #5
Create a new table with columns.

' BeginCreateTableVB
Sub Main()
    On Error GoTo CreateTableError
   
    Dim tbl As New Table
    Dim cat As New ADOX.Catalog
   
    ' Open the Catalog.
    cat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & _
        "Data Source='c:\Program Files\Microsoft Office\" & _
        "Office\Samples\Northwind.mdb';"
   
    tbl.Name = "MyTable"
    tbl.Columns.Append "Column1", adInteger
    tbl.Columns.Append "Column2", adInteger
    tbl.Columns.Append "Column3", adVarWChar, 50
    cat.Tables.Append tbl
    Debug.Print "Table 'MyTable' is added."
   
    'Delete the table as this is a demonstration.
    cat.Tables.Delete tbl.Name
    Debug.Print "Table 'MyTable' is deleted."
   
    'Clean up
    Set cat.ActiveConnection = Nothing
    Set cat = Nothing
    Set tbl = Nothing
    Exit Sub
   
CreateTableError:

    Set cat = Nothing
    Set tbl = Nothing

    If Err <> 0 Then
        MsgBox Err.Source & "-->" & Err.Description, , "Error"
    End If
End Sub
' EndCreateTableVB

Create Indexes:
' BeginCreateIndexVB
Sub Main()
    On Error GoTo CreateIndexError

    Dim tbl As New Table
    Dim idx As New ADOX.Index
    Dim cat As New ADOX.Catalog
   
    'Open the catalog.
    ' Open the Catalog.
    cat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & _
        "Data Source='c:\Program Files\Microsoft Office\" & _
        "Office\Samples\Northwind.mdb';"
   
    ' Define the table and append it to the catalog
    tbl.Name = "MyTable"
    tbl.Columns.Append "Column1", adInteger
    tbl.Columns.Append "Column2", adInteger
    tbl.Columns.Append "Column3", adVarWChar, 50
    cat.Tables.Append tbl
    Debug.Print "Table 'MyTable' is added."
   
    ' Define a multi-column index
    idx.Name = "multicolidx"
    idx.Columns.Append "Column1"
    idx.Columns.Append "Column2"
   
    ' Append the index to the table
    tbl.Indexes.Append idx
    Debug.Print "The index is appended to table 'MyTable'."
   
    'Delete the table as this is a demonstration
    cat.Tables.Delete tbl.Name
    Debug.Print "Table 'MyTable' is deleted."
   
    'Clean up
    Set cat.ActiveConnection = Nothing
    Set cat = Nothing
    Set tbl = Nothing
    Set idx = Nothing
    Exit Sub
   
CreateIndexError:
    Set cat = Nothing
    Set tbl = Nothing
    Set idx = Nothing
   
    If Err <> 0 Then
        MsgBox Err.Source & "-->" & Err.Description, , "Error"
    End If
End Sub
' EndCreateIndexVB


And keys:
' BeginCreateKeyVB
Sub Main()
    On Error GoTo CreateKeyError

    Dim kyForeign As New ADOX.Key
    Dim cat As New ADOX.Catalog

    ' Connect the catalog
    cat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & _
        "Data Source='c:\Program Files\Microsoft Office\" & _
        "Office\Samples\Northwind.mdb';"
   
    ' Define the foreign key
    kyForeign.Name = "CustOrder"
    kyForeign.Type = adKeyForeign
    kyForeign.RelatedTable = "Customers"
    kyForeign.Columns.Append "CustomerId"
    kyForeign.Columns("CustomerId").RelatedColumn = "CustomerId"
    kyForeign.UpdateRule = adRICascade
   
    ' Append the foreign key
    cat.Tables("Orders").Keys.Append kyForeign
   
    'Delete the Key as this is a demonstration
    cat.Tables("Orders").Keys.Delete kyForeign.Name
   
    'Clean up
    Set cat.ActiveConnection = Nothing
    Set cat = Nothing
    Set kyForeign = Nothing
    Exit Sub
   
CreateKeyError:
    Set cat = Nothing
    Set kyForeign = Nothing
   
    If Err <> 0 Then
        MsgBox Err.Source & "-->" & Err.Description, , "Error"
    End If
   
End Sub
' EndCreateKeyVB
Avatar billede reds2001 Nybegynder
02. juli 2002 - 08:12 #6
Terry>>Jeg er ked af at skuffe dig, trods din gode indsats, men jeg mener ikke at det eksempel du illustrere løser mit problem. Jeg har dog i mellemtiden løst problemet selv på denne måde:
    Dim DB As Database
    Dim tdf As TableDef
    Set DB = OpenDatabase("C:\User\demodata.mdb")
    Set tdf = DB.TableDefs("TESTTABLE")
    '--------------------------------------
    tdf.Fields("TEST_ID").AllowZeroLength = True
    tdf.Fields("TEST_ID").Required = False
Nå er der bare opstået et andet problem:
Jeg kan tilsyneladende ikke erstatte "TEST_ID" med en variable. Kan det være rigtigt, for så har jeg et problem.
Avatar billede reds2001 Nybegynder
02. juli 2002 - 08:28 #7
Terry>>Problemet med variablen skal du ikke tænke på, det var bare en afvigelse i den gængse syntaks(efter min opfattelse). For dine anstrengelser får du 50p, håber at det er iorden.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester