Avatar billede rookie44 Juniormester
01. februar 2010 - 13:36 Der er 16 kommentarer og
1 løsning

Ændre tekstfelt til talfelt via kode

Jeg vil lave en opdatering i min eksterne tabel fra min frontend.
Feltnavn Aktnr er defineret som et tekstfelt, dettte vil jeg gerne ændre til et talfelt.
Der er data i tabellen der ikke må slettes.
Avatar billede mugs Novice
01. februar 2010 - 15:16 #1
Koden ændrer feltdefinitionen. Når feltet indeholder data, må der selvfølgelig ikke være alfanumeriske tegn. Men du tager selvfølgelig en kopi af db og afprøver på denne kopi.

Dim db As Database
Set db = CurrentDb
db.Execute "Alter table [din tabel] ALTER [dit felt] long"
Avatar billede rookie44 Juniormester
01. februar 2010 - 15:43 #2
Jeg har skrevet
Dim db As DAO.Database
Set db = CurrentDb()
db.Execute "Alter T_Matrstyklist Alter Aktnr Long"

Der meldes ingen fejl, men feltet bliver ikke opdateret.
Tabellen er en linked tabel.
Avatar billede mugs Novice
01. februar 2010 - 15:49 #3
En sammenkædet tabel skal ændres i BackEnd. FrontEnd indeholder jo ingen tabeller som sådan, men blot en sti til BackEnd. Prøv denne:

Dim db As Database
Set db = OpenDatabase("C:\din mappe\din database.mdb")
db.Execute "Alter table [Din tabel] ALTER [Dit Felt] Long"
Avatar billede rookie44 Juniormester
01. februar 2010 - 16:01 #4
Hej mugs

Jeg har tilføjet felter til de linkede tabeller. Det går fint med følgende kode
Set WdsData = OpenDatabase(Filename,, True)
Set MyTable = WdsData.TableDefs!T_Projdata
Set fld = MyTable.CreateField("Feltnavn",dbText, 35)
MyTable.Fields.Append fld
WdsData.TableDefs.Refresh

kan man ikke bruge noget tilsvarende til at ændre feltet til tal i stedet for text
Avatar billede mugs Novice
01. februar 2010 - 16:14 #5
Det er vel 2 alen ud af samme stykke. Jeg har nogle gange anvendt min kode uden problemer. Har du prøvet?
Avatar billede rookie44 Juniormester
01. februar 2010 - 16:26 #6
Ja, jeg har prøvet din kode

WdsData.Execute "Alter T_Matrstyklist ALTER Aktnr Long"

Det giver ingen ændring
Avatar billede mugs Novice
01. februar 2010 - 16:32 #7
Min kode indeholder ikke:

WdsData.Execute "Alter T_Matrstyklist ALTER Aktnr Long"
Avatar billede rookie44 Juniormester
01. februar 2010 - 17:56 #8
Jeg har skrevet
Set WdsData = OpenDatabase(Filename,, True)
i stedet for, da det er den jeg bruger til at tilføje felter til tabeller. Er det ikke OK?
Avatar billede mugs Novice
01. februar 2010 - 18:12 #9
Du skal jo ikke tilføje felter, men ændre definitionen i et eksisterende felt.
Avatar billede rookie44 Juniormester
01. februar 2010 - 18:58 #10
Jeg har prøvet følgende:

Dim db As Database
Set db = OpenDatabase(FileName)
db.Execute "Alter table T_Matrstyklist ALTER Aktnr Long

Hvor FileName indeholder placering af databasen.
Men der sker ingen ændring af felt definition.
Andre forslag?
Avatar billede mugs Novice
01. februar 2010 - 19:11 #11
Det eneste jeg kan foreslå er, at du prøver at sætte [] omkring tabelnavnet. Mellemrum og specialtegn som underscore er en uvane.

Får du nogen fejlmeddelelser?

Jeg har afprøvet min kode i en testdb, og den fungerer. Jeg kan sende dig en testdb hvis du lægger din e-mail.
Avatar billede rookie44 Juniormester
01. februar 2010 - 20:12 #12
Nej Jeg får ingen fejlmeddelelser.

Du må meget gerne sende din testdb til
ldt@post3.tele.dk
Avatar billede mugs Novice
01. februar 2010 - 20:48 #13
Prøvede at sende, men får fejlen, at det er en ugyldig emailadresse.
Avatar billede rookie44 Juniormester
01. februar 2010 - 21:58 #14
Den er LDT@post3.tele.dk

Hvad er din mail, så sender jeg en til dig fra min.
Avatar billede mugs Novice
01. februar 2010 - 22:02 #15
Sendt igen uden fejl.
Avatar billede rookie44 Juniormester
02. februar 2010 - 09:11 #16
Hej mugs

Din testdb virker fint på min database, men når jeg prøver fra mit egert program så virker det ikke.
Nogen hints til hvad der kan være galt?
Avatar billede mugs Novice
02. februar 2010 - 09:24 #17
Prøv at checke om du har en reference til DAO. Word-fil sendt med mine referencer.
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