Avatar billede jnoval Nybegynder
29. november 2004 - 10:15 Der er 22 kommentarer og
2 løsninger

Query der skal dele felt i 2 dele

Jeg har en database med en tabel (items)der bl.a. består af en masse filnavne:
1443495.plt
1443495.drw
1459874-xx.pdf
...
Jeg vil gerne have lavet en ny tabel eller en ændring af tabel items, med tilføjelse af en nye kolonner:
1. Hvor filenavn extension ikke er med.
2. Extension.
D.v.s. at de nye kolonner skal være:
1443495    plt
1443495    drw
1459874-xx  pdf
...
De gamle data skal ikke ændres, men data skal tilføjes.
Jeg kan lave det i excel, men jeg kan ikke finde ud af det i access, men jeg vil da mene at det kan lade sig gøre
Avatar billede jensen363 Forsker
29. november 2004 - 10:19 #1
Del felter med ( forudsætter, at tekststrengen er lige lang )

  Left([Felt];X]
  Rigth ([Felt];x)
  Mid([Felt];x;y)
Avatar billede jensen363 Forsker
29. november 2004 - 10:22 #2
Eksempel :  1443495.plt deles således

Left([Felt];7)
Right([Felt];3)
Avatar billede jnoval Nybegynder
29. november 2004 - 10:28 #3
Det var hurtigt.
Kan du give mig et eksempel på brug i SQL. Jeg er ikke lige med på hvordan jeg skal angive det.
Avatar billede fennec Nybegynder
29. november 2004 - 10:30 #4
Du kan bruge InStr() funktionen til at finde ".".

FilNavn = left(FuldtNavn,InStr(FuldtNavn,"."))
Extension = right(FuldtNavn,len(FuldtNavn)-InStr(FuldtNavn,"."))

Kan ikke helt huske hvilken værdi/placering InStr() returnerer, så der skal sikkert lægges 1 til eller trækkes 1 fra i en af funktionerne, ellers kommer punktummet med på en af værdierne.
Avatar billede fennec Nybegynder
29. november 2004 - 10:32 #5
update DinTabel set filnavn=left(KolonneMedFil,InStr(KolonneMedFil,".")), extension=right(KolonneMedFil,len(KolonneMedFil)-InStr(KolonneMedFil,"."))
Avatar billede overchord Nybegynder
29. november 2004 - 10:33 #6
Det kommer lidt at paa hvilken version of access du har.
I Access 2003 er InStr tilgaengeligt (ved ikke om det samme er galdende for 2002)

Saa du kan finde positionen hvor punktum deler filnavn og extenstion

  filnavn = left(.Field(x), Instr(.Field(x), ".")-1)
  extens = right (.Field(x), Len(.Field(x) - Instr(.Field(x), "."))

Hvor .Field(x) referer til felt-nummer i dit recordset.
Avatar billede overchord Nybegynder
29. november 2004 - 10:33 #7
lol - alt for sen paa den der :-) !!!
Avatar billede ldanielsen Nybegynder
29. november 2004 - 10:34 #8
UPDATE items SET items.Navn = Left(items.FilNavn,InStr(1,items.FilNavn,".")-1), items.Ext = Mid(items.FilNavn,InStr(1,items.FilNavn,".")+1);
Avatar billede jnoval Nybegynder
29. november 2004 - 11:44 #9
Det er Access 2000, Engelsk
Jeg har prøvet løsningen fra Idánielsen. Den gav et par problemer:
1. Felter: Navn og ext skal oprettes først i tabel items, ellers spørges der efter value
2. Microsoft Access Can't update all records in the update query: MS Access diden't update 1 filed(s) due a type conversion failure.... Det virker hvis jeg vælger yes til at ignore error
Avatar billede jnoval Nybegynder
29. november 2004 - 11:46 #10
Sql streng:
UPDATE items SET items.Navn = Left(items.Key,InStr(1,items.key,".")-1), items.Ext = Mid(items.key,InStr(1,items.key,".")+1);
Avatar billede ldanielsen Nybegynder
29. november 2004 - 13:17 #11
Er der en punktum i alle filnavnene?

Og ja, det var nemlig meningen at du skulle oprette de to nye felter i tabellen. Alle tre felter bør være samme format.
Avatar billede ldanielsen Nybegynder
29. november 2004 - 13:17 #12
I øvrigt; der er vel ikke mere end et punktum i filnavnene?
Avatar billede jnoval Nybegynder
29. november 2004 - 13:26 #13
Er det ikke muligt at oprette de 2 felter automatisk?
Jeg vil mene at der er et og kun et punktum i filnavnene. Men helt sikker er jeg ikke, da jeg har ca 10.000 records. Kan det være et filnavn med 2 punktum der giver fejlmeldingen?
Avatar billede ldanielsen Nybegynder
29. november 2004 - 13:45 #14
næ, det kunne være et feltnavn uden punktum, eller snarere et tomt felt. Eller muligvis er formaterne ikke kompatible.

Oprette automatisk, er der mere end en tabel? Mener du at felterne automatisk skal udfyldes når "det gamle" felt udfyldes?
Avatar billede jnoval Nybegynder
29. november 2004 - 14:45 #15
Så er det sikkert et tomt felt eller et uden punktum.
Automatisk mener jeg ved kørsel af query. Databasen er fra et andet databasesystem, men kan deldigvis åbnes i access. Jeg skal af og til åbne en kopi af databasen i access, og lave en søgning på "ens" records (uden extension). Så det er kun et øjebliksbilled jeg henter ind for at generere en report. Så var det blot for at slippe for at skulle lave de 2 felter manuelt.
Avatar billede fennec Nybegynder
29. november 2004 - 15:00 #16
mener du i en select sætning???

select items.*, Left(items.Key,InStr(1,items.key,".")-1) as filNavn, Mid(items.key,InStr(1,items.key,".")+1) as filExt from items
Avatar billede jnoval Nybegynder
29. november 2004 - 15:02 #17
Nej med en Update. Jeg vil tilføje 2 nye felter til en eksisterende tabel
Avatar billede fennec Nybegynder
29. november 2004 - 15:22 #18
Det kan du ikke med en update. Der skal felterne være oprettet.
Det du leder efter er måske et VIEW, men det har jeg ikke erfaring med i Access, men det er der sikkert andre der har.
Avatar billede mugs Novice
29. november 2004 - 18:34 #19
Du kan inden du kører din update, tilføje felterne med denne:

Alter Table TABELNAVN
ADD COLUMN FELTNAVN String (20)
Avatar billede jnoval Nybegynder
30. november 2004 - 11:36 #20
Idanielsen og fennec lad mig få nogle svar, så I kan få point.
Mugs det virker sikkert, men jeg valgté at lave en ny tabel, og slippede dermed for at skulle akivere den ekstra sql kommando.
Avatar billede ldanielsen Nybegynder
30. november 2004 - 12:22 #21
svar
Avatar billede fennec Nybegynder
30. november 2004 - 12:29 #22
.o) <-- One Eyed Jack
Avatar billede mugs Novice
30. november 2004 - 16:49 #23
jnoval -> Det fungerer. At du valgte en anden løsning er helt fint ;o)
Avatar billede jnoval Nybegynder
30. november 2004 - 19:38 #24
Tak for hjælpen
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