Avatar billede df9934 Nybegynder
13. marts 2001 - 12:03 Der er 6 kommentarer og
3 løsninger

udvælge en del af en kolonne

Kolonnen består af tekst celler, hvor dataene står på denne måde:xxx-xxx-xxx
hvor xxx er = tal eller bogstaver på højest 3 tegn adskilt med \'-\' tegnet. Kan man udvælge f.eks de sidste 3 tegn i hele kolonnen og kopiere det til udklipsholderen. Det er fordi at databasen skal gøres relationel, og så skal ID\'et opdeles i flere dele.
Avatar billede proaccess Nybegynder
13. marts 2001 - 12:24 #1
Du kan bruge Right$-funktionen til at tage de sidste x tegn fra en \"celle\".

=Right$([kolonnens navn]; 3)
hvor 3 er antallet af tegn.

HDH
ProAccess
Avatar billede df9934 Nybegynder
13. marts 2001 - 12:34 #2
jeg har prøvet i access men det jeg får ud af det er ingen ting. Dvs. at felterne er tomme.
Avatar billede proaccess Nybegynder
13. marts 2001 - 12:59 #3
Hvordan er din tabel opbygget, og hvad er kriteriet for din xxx-xxx-xxx celle??

Skal du lave en ny tabel, eller tilrette den oprindelige??

Har du allerede data liggende i en access-tabel, eller ligger de et andet sted??
Avatar billede df9934 Nybegynder
13. marts 2001 - 13:10 #4
Det er en flad tabel og der er ingen kriterier for xxx-xxx-xxx cellen. Jeg skal lave en ny tabel og smide de sidste 3 tegn ind i den som en del af en sammensat nøgle f.eks H01-002-003 hvor 003 så skal bruges i de nye tabel. Det skal lige sige at tabellen(ikke den nye) er sammenkædet med en dBase database.
Avatar billede proaccess Nybegynder
13. marts 2001 - 13:16 #5
Så skulle du kunne lave følgende Forespørgsel:

SELECT Right$([FeltNavn], 3) AS NytFelt FROM [TabelNavn];

Felt- og TabelNavn skal erstattes med de rigtige navne...

Dette kan ændres til en tabeloprettelses-forespørgsel, når du får tilføjet dine øvrige felter med information.

Avatar billede region Nybegynder
18. marts 2001 - 10:58 #6
Brug MID funktionen via en query.

Lav en query på baggrund af din tabel. Skriv denne streng i din query.

Mid([Felt1];9;3)

[felt1] er det felt hvor dine xxx-xxx-xxx værdier står.

såfremt felt 1 = 123-456-789, ville din MID resulterer 789 som resultat.
Avatar billede region Nybegynder
18. marts 2001 - 10:59 #7
resultatet kunne du nu update i et nyt felt i din tabel eller en anden tabel
18. marts 2001 - 16:09 #8
Til Region: Mid er ikke så god, da df9934 fortalte at xxx er på HØJEST 3 tegn. Derved kan du risikere at tallet hedder: \"12-34-56\" istedet for \"123-456-789\". Derved duer mid ikke, da Mid([Felt1];9;3) giver \"\".

Til df9934: Kan den sidste del af tallet (altså det du vil trække ud) godt være på 1 eller 2 tegn? I så fald duer det jo ikke at tage de 3 sidste tegn. Derimod skal man finde det sidste \"-\" og så tage resten!

Dene funktion skulle gøre det:

Public Function OpsplitTekst(Tekst As String)
    Dim Pos As Integer
    Pos = Len(Tekst)
    Do Until Mid(Tekst, Pos, 1) = \"-\" Or Pos = 1
        Pos = Pos - 1
    Loop
    OpsplitTekst = Mid(Tekst, Pos + 1)
End Function

Derved kunne du lave en query, med følgende SQL:

INSERT INTO [NyTabel] ( *, [NytFelt] )
SELECT *, OpsplitTekst([GlFelt])
FROM GlTabel;

Derved får du oprettet en ny tabel, som er identisk med den gamle, bortset fra at du får en ekstra kolonne med det nye felt. Derefter kan du altid fjerne og tilføje kolonner i den nye tabel som du vil.

mvh
Thomas

18. marts 2001 - 16:11 #9
Ovenstående eksempel duer forøvrigt uanset antallet af tegn efter den sidste \"-\", og kan derfor bruges under alle omstændigheder.

/Thomas
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



IT-JOB