Avatar billede rookie44 Juniormester
05. juli 2010 - 21:44 Der er 11 kommentarer og
1 løsning

Tilføje et felt i en database

Jeg prøver at oprette et felt i en tabel i en sammenkædet database.
Nedennævnte kode er tidligere brugt uden problemer, men nu virker den ikke. Koden kører og der kommer ingen fejlmeddelelse, men feltet bliver bare ikke oprettet.
Er dre nogen der kan et tip til hvad der er galt.



Sub Opdat304305()
'Tilføjer feltet FStatus til tabellen T_Faktura
On Error GoTo ERR_Opdat304305
Dim db As DAO.Database
Dim fld As DAO.Field
Dim tdf As DAO.TableDef

'Set db = CurrentDb()

Dim DB_FileName, DB_Pathname, DB_TableName As String
DB_FileName = "MKPdata.mdb"            ' Tabeldatabasen
DB_Pathname = Forms!Aabningbillede.Stinavn  'henter den database man ønkser at benytte 'rstNavn.DataSti      'Trim(Command)            ' Sti fra genvejsmenu /cmd C:\DSdata
If Right(DB_Pathname, 1) <> "\" Then
      DB_Pathname = DB_Pathname & "\"
End If
FileName = DB_Pathname & DB_FileName  '=fulde sti + filnavn
 
Set db = OpenDatabase(FileName)

Set tdf = db.TableDefs!T_Faktura

'WdsData.Execute "Alter T_Faktura Alter FSTatus Long"

Set fld = tdf.CreateField("FStatus", dbLong) 'Feltnavn = FStatus, og egenskab = Langt heltal
'MyTabel.Fields.Append fld
'WdsData.TableDefs.Refresh
'If MyTabel.Updatable = True Then
'  With MyTabel
'      .Fields.Append .CreateField("Restmandetimer", dbSingle)
'  End With
'End If

Set db = Nothing

Exit_Opdat304305:
  Exit Sub
 
ERR_Opdat304305:
  MsgBox ("Fejl i opdatering " & Err.Description)
  GoTo Exit_Opdat304305



End Sub
Avatar billede terry Ekspert
05. juli 2010 - 21:51 #1
you are aware that some of the code is comment out?

'MyTabel.Fields.Append fld
'WdsData.TableDefs.Refresh
'If MyTabel.Updatable = True Then
'  With MyTabel
'      .Fields.Append .CreateField("Restmandetimer", dbSingle)
'  End With
'End If
Avatar billede Slettet bruger
05. juli 2010 - 23:04 #2
Som Terry anfører, så slører du fokus ved at vise udkommenterede  or dermed irelevante linier.
Oplysningen om at tabelen er sammenkædet,  er det overhovedet relevant? er det ikke backend path der hentes i 'Forms!Aabningbillede.Stinavn' - frontenden (hvorfra koden køres) hedder bare currentdb.Name

Prøv at sætte et breakpoint efter 'filename=' og se om  det passer.
Avatar billede rookie44 Juniormester
06. juli 2010 - 16:43 #3
Terry
Kommentar linierne er andre metoder der er mislykkedes

p.t prøver jeg denne kode set i et svar fra 2002

Dim DB_FileName, DB_Pathname, DB_TableName As String
DB_FileName = "MKPdata.mdb"            ' Tabeldatabasen
DB_Pathname = Forms!Aabningbillede.Stinavn  'henter den database man ønkser at benytte 'rstNavn.DataSti      'Trim(Command)            ' Sti fra genvejsmenu /cmd C:\DSdata
If Right(DB_Pathname, 1) <> "\" Then
      DB_Pathname = DB_Pathname & "\"
End If
MinFil = DB_Pathname & DB_FileName  '=fulde sti + filnavn
 
DoCmd.RunSQL "ALTER TABLE MinFil.T_Faktura ADD COLUMN FStatus SHORT"
 

Men jeg får at vie at i DoCmd sætningen er der en Syntaksfejl
Avatar billede terry Ekspert
06. juli 2010 - 19:30 #4
we obviously cant see what MinFil contains so I suggest you make sure it contains what you expect.

One way to do this is using a message box


Place theis before your DoCmd...


Msgbox Minfil
Avatar billede rookie44 Juniormester
06. juli 2010 - 19:41 #5
Terry

Jeg har testen den og MinFil viser den rigtige fil placering i dette tilfælde

C:\MakaporXPUdviklling\demo\mkpdata.mdb

Det er sådan at brugeren kan have flere Backends der hver i sær skal have tilføjet feltet.
Avatar billede rookie44 Juniormester
06. juli 2010 - 19:51 #6
Terry

Når jeg kører den viste kode med en MsgBox får jeg det rigtige indhold i MinFil, men jeg får en fejlmeddellelse der siger:

Fejl i opdatreringen Filen "C:\Users\leifdyhr44\Documents\MinFil.mdb" kan ikke findes.
Avatar billede terry Ekspert
06. juli 2010 - 20:14 #7
are you 100% sure that the db does exist there?

Try moving the dB to the same folder as the frontend then you can use


MinFil  = Left(CurrentDB.Name, Len(CurrentDB.Name) - Len(Dir(CurrentDB.Name))) & "MinFil.mdb"
Avatar billede rookie44 Juniormester
06. juli 2010 - 20:22 #8
Ja, jeg er 100% sikker på at filen eksisterer i den angivne placering. Jeg kan arbejde med alle data uden problemer.

Koden skulle gerne virke uanset placeringen af Backenden.
Men jeg prøver at flytte den til Frontend placeringen.
Vender tilbage senere.
Avatar billede rookie44 Juniormester
08. juli 2010 - 09:40 #9
Terry
Jeg har nu prøvet at køre programmet med frontend og backend placeret i samme sti og brugt din kode.
Jeg får samme fejl som beskrevet ovennfor.
Avatar billede terry Ekspert
08. juli 2010 - 10:26 #10
Ah! Just woke up after a long sleep :o)


DoCmd.RunSQL "ALTER TABLE " & MinFil & ".T_Faktura ADD COLUMN FStatus SHORT"
Avatar billede rookie44 Juniormester
09. juli 2010 - 08:28 #11
Terry

BINGO. Nu fungerer det. Smider du et svar
Avatar billede terry Ekspert
09. juli 2010 - 09:36 #12
great :o)

I dont understand why it took me so long to see the problem, age maybe :o)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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