webForumDet fria alternativet

Ta med allt innan ett visst tecken...

ASP

9 svar · 450 visningar · startad av adnoctum

Medlem sedan jan. 200438 inlägg
Frågan#1

Hejsan !

Jag sitter och funerar lite på hur man skulle kunna gå tillväga för att hämta en vald del ur en post i en access databas.

En av posterna i min databas lagrar information så här:
artist - skivtitel

Jag vet att jag borde ha separerat "artist" och "skivtitel" från början, men nu är det så och jag har över 500 poster i databasen, så jag vill inte ändra på det nu.

För att skriva ut ur databasen på min sida så har jag denna kod: <%=RecSet("Album")%>

Och då skrivs "artist - skivtitel" ut så klart.

Men, jag skulle vilja kunna skriva ut endast "artist", går det ?
Altså, alla tecken efter artist hoppas över liksom... även mellanrummet direkt efter "artist" skall bort...

Men jag vill fortfarande att informationen lagras i databasen så som det är nu, för jag skriver ju även ut både "artist" och "skivtitel" på ett ställe på min sida, och jag vill endast ha "artist" på ett annat ställe.

Eftersom det alltid är olika antal tecken i artistens namn, så kan jag ju inte göra så här: <%=left(RS("Album"),12)%>

Medlem sedan nov. 20017 144 inlägg
#2

Splitta på bindestrecket.

Dim mySplit, artist, skivtitel
mySplit=split(RecSet("Album"),"-")
artist = trim(mySplit(0))
skivtitel = trim(mySplit(1))

Response.write artist
Response.write skivtitel

Har du nu detta konsekvent i hela kolumen i databasen så skall detta funka.
Men det funkar bara om du har ett bindestreck.

Medlem sedan jan. 200438 inlägg
#3

Tack ! Jag skall prova det...

Jag vet inte om det kan ställa till det hela, men säg att en artist har ett namn med ett eller flera mellanrum i, jag vill ju fortfarande skriva ut hela namnet, men jag vill ta bort mellanrummet som är precis innan tecknet "-" och allt där efter...

Medlem sedan nov. 20017 144 inlägg
#4

läs om mitt inlägg.
Jag såg inte att du använde ett bindestreck mellan artist och skivtitel.

Carola Häggkvist - I midsommartid Funkar

Sven-Bertil Taube - Visor i molom Funkar inte

Miles Davis Neffertiti Funkar inte

Medlem sedan jan. 200438 inlägg
#5

tack ska du ha !

tyvärr så verkar det ha kört ihop sig... jag får inte till det, kan ha drabbats av "hjärnsläpp" eller nåt. :)

Hur skulle koden se ut mer exakt när den är inlagd i asp filen ?

Vad skriver jag för att endast får "artist" utskrivet på valt ställe ?

Medlem sedan feb. 200112 078 inlägg
#6

Jag tycker det verkar som om du har en grymt dålig databasdesign i dagsläget. ;)

Det finns inget sätt i hela världen för dig att skriva någon kod som med ren logik kan reda ut det där eftersom både albumnamn kan innehålla mellanslag (ett eller flera), streck (även här ett eller kanske tillochmed flera) och andra tecken och stavningar som enbart en människa kan skilja på och göra en resonlig bedömning på vad som är artist och album. Precis som JesperT skriver måse det finnas någon slags konsekvens i datat, vilket det uppenbarligen inte gör idagsläget. Det är nog den manuella vägen som gäller.

Varför ser det ut så överhuvudtaget?

RED. Du skulle ju visserligen kunna kolla efter " - " (mellanslag + streck + mellanslag) för att separera datat. Dock, det förutsätter ju att det alltid ser ut så mellan artist och album, samt att det inte finns mer än en förekomst.

Medlem sedan jan. 200438 inlägg
#7

du vet... "alla är vi barn i början".

Jag håller på och lär mig, skall försöka göra ett register med CD skivor. Blev så klart glad när jag fick till det så att det fungerade, matade in info om ca 500 CD´s, sen kom jag på att det vore kul om man kunnde skriva ut enbart artistens namn på ett ställe...

Medlem sedan feb. 200112 078 inlägg
#8

Personligen hade jag lagt lite tid på att göra det manuellt nu, när du ändå inte har mer än 500 rader i databasen. Det hade varit värre ifall det var t.ex. 5000 poster. ;)

Medlem sedan nov. 20017 144 inlägg
#9

För att "fuska".
Hämta dina poster ifrån databasen(hur du nu gör det) och fyll variabeln artist/skivtitel och skriv ut den som vanligt.
Response.write artist

För att göra om detta ifrån början:
Skapa två stycken nya kolumner i databasen
a_exekutor - text
a_album - text
Se till att alla poster i den nuvarande kolumnen "album" har ett(1 inte 0 eller fler) bindestreck i sig. Och skapa en sida som du kör (en gång!)

Set Conn = Server.CreateObject("Adodb.Connection") 
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = Din_databas.mdb"

SQL = "Select album From din_tabell"
Set RS = Conn.execute(SQL)

	Do Until RS.EOF
		mySplit=split(RS("Album"),"-")
		Conn.execute("INSERT INTO din_tabell (a_exekutor,a_album) VALUES('"& mySplit(0) &"','"& mySplit(1) &"')"),,128
	RS.MoveNext
	Loop

RS.close : Set RS=nothing
Response.write "Kopiering klar"

Ta sedan bort din gamla kolumn artist.
:)

Medlem sedan jan. 200438 inlägg
#10

Tack för alla svar & tips !

Jag valde efter alla om och men att gå på OveRRidE´s linje... Jag har börjat ändra i databasen, har separerat "artist" och "skivtitel" nu.

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)