Avatar billede sbhansen Nybegynder
07. april 2001 - 21:32 Der er 2 kommentarer og
1 løsning

Opret felt i DBs tabel - kan man via ADO - eller kun DAO

Jeg prøver på at oprette et felt i en given tabel. Dette er min hensigt:

MyDatabase er et object der indeholder Databaseconnection, Placeringen af db o.m.a.

Når der peges på en primaryTable i DestinationDB skal det undersøges om der findes et felt med navnet CodeProcess. Hvis ikke, så skal det laves - men hvordan?

- Her er koden op til indsættelsespunktet
_______

\' Examines if there is a CodeProcess-field:
    CodeProcessfield = False
    If Not rsFieldNames.EOF Then
        For Each objField In rsFieldNames.Fields
            Me.ComboDestinationACField.AddItem objField.Name
            Me.ComboDestinationRCField.AddItem objField.Name
            If objField.Name = \"CodeProcess\" Then
                CodeProcessfield = True
            End If
        Next
    Set rsFieldNames = Nothing
    rsFieldNames.Close
    If CodeProcessfield = False Then
    \' Here I insert a field for keeping track of the processed rows in the destination table.
    \'creater.CreateField \"CodeProcess\", string(50,) \' This I don\'t know how to do

Den Tabellen der skal modtage feltet er:
MyApp.DestinationDB.PrimareDestTable

Hvis det kan bruges til noget er der her de private def. variables i MyDatabase objektet:
Private mvarDBName As String \'local copy
Private mvarConnection As New ADODB.Connection  \'local copy
Private mvarDBOpen As Boolean \'local copy
Private mvarADODBRecordset As ADODB.Recordset \'local copy
Private mvarPrimaryTable As String \'local copy
Private mvarSecondaryTable As String \'local copy
Private mvarField1 As String \'local copy
Private mvarField2 As String \'local copy
Private mvarField3 As String \'local copy
Private mvarField4 As String \'local copy

Håber der kan hjælpes ud fra det her...
Jeg vil meget gerne have noget hjælp ud fra ADO principperne - hvis det altså er muligt... :-)
/Søren
- newbie on the way
12. april 2001 - 15:18 #1
Hej Søren,

Hvis du ikke vil benytte DAO, skal du bruge ADOX (ikke ADO). Her er et eksempel på hvordan man opretter en kolonne i en tabel:

Sub ADOCreateNewColumn()

  Dim cat As New ADOX.Catalog
  Dim col As New ADOX.Column

  \' Åbn katalog
  cat.ActiveConnection = \"Provider=Microsoft.Jet.OLEDB.4.0;\" & _
      \"Data Source=.\\Database.mdb;\"

  \' Opret ny kolonne
  With col
      .Name = \"NytFelt\"
      .Type = adInteger
      Set .ParentCatalog = cat
      \'gør evt feltet til autonumber
      .Properties(\"AutoIncrement\") = True
  End With

  \' Tilføj kolonnen til tabellen
  cat.Tables(\"DinTabel\").Columns.Append col

  Set cat = Nothing
End Sub

/Thomas
12. april 2001 - 15:19 #2
(...fortsat)

Husk at sætte en reference ADOX !
Avatar billede sbhansen Nybegynder
16. april 2001 - 13:59 #3
Jeg har ikke helt fået løst mit problem, men du har hjulpet mig godt på vej, Thomas.

Din kode virker - så du fortjener dine point. Desværre prøver jeg (som du kan se af ovenstående) at arbejde objektorienteret. Det medfører at tabellen bliver låst, således at jeg ikke kan \"Appende col\" i næstsidste linje. Jeg får en fejl, at tabellen er låst:
Run-time error \'-2147217856
Databasemotoren kan ikke låse tabellen \"Testadr\", fordi den allerede anvendes af en anden person eller process.

Hardcoder jeg derimod et andet tabelnavn end min primarytabel-variabel indeholder - således at jeg bestemmer hvilken tabel der skal modtage feltet - så er der ingen problemer... Både godt og skidt...
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