Hej Räknare är en egenskap i ADOX, inte en datatyp. Testa detta: Hej! Det fixade sig efter att jag skrev om lite. "AutoIncrement" verkar inte fungera att sätta på ADOX.Column objekt utan det fungerar från ADOX.Table. Knepigt men nu fungerar det iaf. Tack för tipset med "AutoIncrement". Hur sätter man datatypen räknare med VB kod?
Ska skapa en ny tabell i en accessdatabas med hjälp av programkod VB + ADOX men hittar inte hur man sätter datatypen räknare som jag vill ha på min primärnyckel. Tex så får jag ett långt heltal med konstanten "adLongVarBinary" eller en int med hjälp av "adInteger" men VILKEN KONSTANT MOTSVARAR RÄKNARE i Access?
Använder nedanstånde för att skapa tex ett fält med integer som datatyp
col1.Name = "mitt nya datafält"
col1.Type = adInteger 'Går det att ist. få en RÄKNARE och vilken är den konstanten
adoxTable.Columns.Append col1
Alla typer av lösningar är välkomna. Det kanske helt enkelt inte går att få en räknare via ADOX. Går det i så fall att lösa via SQL?
Tack på förhand
MickeSv: Hur sätter man datatypen räknare med VB kod?
With col1
.Name = "mitt nya datafält"
.Type = adInteger
.Properties("AutoIncrement") = True
End With
adoxTable.Columns.Append col1
Sv:Hur sätter man datatypen räknare med VB kod?
Tyvärr så fungerar inte ditt exempel. Jag får error 3265 "Objektet kunde inte hittas i mängden med det begärda namnet eller nummret". Vad gör jag för fel? Det knasiga är att i Accessmiljön väljer man in "Räknare" vid fältet datatyp?!?!? Nedanstående finns min fullständiga kod.
Mvh
Micke
Private Function MakeTable()
Dim adoxCat As New ADOX.Catalog
Dim adoxTable As New ADOX.Table
Dim col1 As New ADOX.Column
Dim col2 As New ADOX.Column
Dim idxNew As New ADOX.Index
On Error GoTo errH
adoxCat.ActiveConnection = dbs
adoxTable.Name = "Min nya tabell"
'Skapa tabellen
With adoxCat.Tables
.Append adoxTable
.Refresh
End With
'Skapa fälten
col1.Name = "Mitt nya datafält 1"
col1.Type = adInteger
col1.Properties("AutoIncrement") = True 'Här buggar det ur
col2.Name = "Mitt nya datafält 2"
col2.Type = adVarWChar
col2.DefinedSize = 50
With adoxTable.Columns
.Append col1
.Append col2
End With
'Sätt index och primärnyckel
idxNew.Name = "Mitt nya index"
idxNew.Columns.Append "Mitt nya datafält 1"
idxNew.PrimaryKey = True
idxNew.Unique = True
adoxTable.Indexes.Append idxNew
adoxCat.Tables.Refresh
errHres:
Exit Function
errH:
MsgBox Err.Description, , Err.Number
Problemet löst!
Denna funkar :-)
Set adoxCat.ActiveConnection = dbs
With adoxTable
.Name = GCTBL_MISC
Set .ParentCatalog = adoxCat
.Columns.Append GCFLD_MISCID, adInteger
.Columns(GCFLD_MISCID).Properties("AutoIncrement") = True
.Columns.Append GCFLD_FILENAME, adVarWChar
End With
adoxCat.Tables.Append adoxTable