Avatar billede torejessen Nybegynder
07. juli 2006 - 22:39 Der er 21 kommentarer og
1 løsning

tabel felt beregning

Hej eksperter

Jeg er lidt i tvivl om, hvordan jeg får lavet et felt i en access-tabel, som laver en beregning.
lad os sige jeg har en tabel med to felter ID og navn. I et 3. felt vil jeg gerne have "brugernavn" som skal være en direkte sammenføjning af de to første felter (a la "[Id]&[navn]".
Jeg kan ikke få det til at virke..

Sig nu ikke bare jeg skal lave en forespørgsel i stedet, for det skal virke via en hjemmeside med ASP. Meningen er, at jeg tilføjer et navn (på en administrator-side) og den skal så returnere et brugernavn jeg kan udlevere til personen. Det skal være det 3. felt. Så vidt jeg ved kan jeg ikke kalde forespørgsler med ASP, så det vil være en stor hjælp hvis tabellen selv kan lave brugernavnet..

Mvh
Tore
Avatar billede fdata Forsker
07. juli 2006 - 22:52 #1
Opret en formular med tre felter: Id, Navn og Brugernavn (som naturligvis ligger i tabellen, der danner grundlag for formularen). I de to første felters AfterUpdate hændelse skriver du:
  Me.Brugernavn=Me.ID & Me.Navn
(husk at "Navn" ikke er helt smart, idet Access af og til misforstår og tror at Me.Navn er navnet på formularen, tsk)
Avatar billede mugs Novice
07. juli 2006 - 22:53 #2
Jeg mener ikke du kan lave det på tabelniveau. Du skal lave en forespørgsel og sammensætte felterne heri, hvad enten du kan lide det eller ej.
Avatar billede fdata Forsker
07. juli 2006 - 22:54 #3
... du kan ikke få "tabellen til selv at lave brugernavnet". Der skal en aktiv handling til (altså formularen).
Ellers skal du igang med noget StoredProcedure noget (som på en SQL server). Det findes efter sigende i Access; men det er godt gemt. Det er der måske nogen, der har erfaring med. Anyone ?
Avatar billede nielle Nybegynder
07. juli 2006 - 22:58 #4
Prøv med denne her:

$sql = "UPDATE dinTabel SET brugernavn = id & "" "" & navn"
Avatar billede nielle Nybegynder
07. juli 2006 - 22:59 #5
Glem $-tegnet ... har bare lavet for meget PHP i dag. ;^)
Avatar billede fdata Forsker
07. juli 2006 - 23:02 #6
Jo mere jeg ser på opgaven, jo mærkeligere ser den ud.
Normalt vil man jo netop prøve at undgå redundans.
Hvorfor kan du ikke bare returnere det udtryk, som du selv skriver: [Id]&[navn] ???
Avatar billede torejessen Nybegynder
07. juli 2006 - 23:09 #7
Hej med jer
Tak for hjælpen, øv det var ikke bare en dum lille overset ting..
Jeg kan jo ikke bruge en formular, for hvordan får jeg den "kørt" via en hjemmesides ASP?
Og Mugs, du har nok ret at man ikke kan (jeg synes bare jeg har set det gjort engang), men uanset kan jeg heller ike kalde en forespørgsel via ASP.

Måske er svaret at lade ASP gøre arbejdet? Fx når jeg skriver navnet (felt2) (via insert into) kunne jeg lade den returnere Id til mig på en ASP side. og så via en ekstra handling opdatere min tabel via en ASP-side der sender Id&navn ?
Avatar billede nielle Nybegynder
07. juli 2006 - 23:11 #8
Har du afprøvet 07/07-2006 22:58:35 ?

Den kan sagtens køre fra ASP.
Avatar billede nielle Nybegynder
07. juli 2006 - 23:13 #9
Jeg ved ikke hvorfor jeg vil have indsat et mellemrum mellem id og navn, det har du jo ikke bedt om:

sql = "UPDATE dinTabel SET brugernavn = id & navn"
Avatar billede torejessen Nybegynder
07. juli 2006 - 23:17 #10
Hmm nielle, hvor skal jeg skrive det?
- i access-feltets standardværdi?
- I ASP-siden?
- I noget VBA?

Hvis det er i ASPsiden du mener, så er der lige det problem at navnet jo ikke eksisterer endnu. Det er det jeg skal tilføje, og jeg ville gerne have access til at returnere et brugernavn.

Det samme spørger jeg lige dig om, fdata?  fra hvor skal jeg få returneret det udtryk?

På forhånd tak :-)
Tore
Avatar billede nielle Nybegynder
07. juli 2006 - 23:19 #11
Du kan køre den fra Access.

Så er der bare:

UPDATE dinTabel SET brugernavn = id & navn

- eller du kan køre den fra dit ASP-script, og så er det noget i denne stil:

sql = "UPDATE dinTabel SET brugernavn = id & navn"
Conn.Execute(sql)

Den sidste passer nok bedst med at det skal fungere automatisk på en hjemmeside.
Avatar billede torejessen Nybegynder
07. juli 2006 - 23:28 #12
OK tak nielle og fdata.
Nielle, bare lige for at forstå dig ret. Det du skriver fungerer ligesom jeg selv skrev, eller hvad?
1. altså en ASPside med en formular til indtastning af navn. siden indsætter værdien i navn-teltet
2. en ASP side returnerer Id for dette navn, og beregner så selv Id&Navn og udskriver det på siden til mig i en ny form.
3. Jeg klikker på en button i denne formular og dermed køres en sql-update som du skrev?

Ellers må du lige korrigere, og smid iøvrigt et svar så får du point :-)
Avatar billede fdata Forsker
07. juli 2006 - 23:36 #13
Prøv evt at spørge i ASP afdelingen. Det kunne jo være, at var bid der.
Avatar billede nielle Nybegynder
08. juli 2006 - 07:40 #14
Nu tør jeg ikke svære 100% på *at* det virker. Men *hvis* (og det er jeg da 99% sikker på), så vil det virke som det du efterspørger.

Nu begynder spørgsmålet så mere og mere at bevæge sig over til at være et spørgsmål om hvordan det bruges i ASP, og derfor er kategorien måske ikke så velvalgt (som fdata også påpeger).

Som fdata sagde tidligere så er det egentlig noget gris at feltet brugernavn indeholder de samme data som id+navn tilsammen. Det kaldes for redundans og er normalt (men ikke altid!) noget man stræber på at undgå. Jeg gætter imidlertid at værdien i brugernavn er en midlertidig værdi, og at folk senere kan ændre den. Er det korrekt?

En mulig løsning i ASP:

' Navnet kommer fra formularen
navn = Request.Form("navn")

' Indsæt navnet i tabellen.
sql = "INSERT INTO dinTabel (navn) VALUES ('" & navn & "')"
Conn.Execute(sql)

' Idet jeg går ud fra at id-feltet automatisk tæller op,
' kan værdien af det netop indsatte fås på denne måde:
sql = "SELECT @@IDENTITY AS nytID FROM dinTabel"
Set rs = Conn.Execute(sql)
id = rs("nytID")

' Opdater brugernavn - brug Access til at beregne værdien:
sql = "UPDATE dinTabel SET brugernavn = id&navn WHERE id = " id
Conn.Execute(sql)

' ... eller alternativt - brug ASP til at beregne værdien:
' sql = "UPDATE dinTabel SET brugernavn = '" & id & navn & "' WHERE id = " id
' Conn.Execute(sql)

Response.Write "Dit brugernavn er: " & id & navn & "<br>"
Avatar billede terry Ekspert
08. juli 2006 - 09:30 #15
I havent looked through all of the answres/komments but in my opiion there is no need for the extra field. The data exists in the first two fields (ID + Navn) which you can select together to give you the combined value (brugernavn).

SELECT [ID] & [navn] AS brugernavn
FROM tblNavn;
Avatar billede torejessen Nybegynder
08. juli 2006 - 11:45 #16
Hej igen og tak for jeres hjælp.
Nielle, er det php koder du har der i den sql sætning?
Jeg ha ikke set @@ eller Identity før, i en sql.
Alligevel arbejder jeg lidt videre med din løsning og ser om jeg kan få den til at fungere.. Du har stadig ikke lagt et svar..

Terry, den løsning du skriver, er noget der ligger i en forespørgsel, ikke?
Det tror jeg ikke jeg kan bruge, for jeg kan ikke kalde forespørgsler eller formularer med en asp-side..
please correct me, hvis jeg tager fejl..

God weekend :-)
Hilsen
Tore
Avatar billede nielle Nybegynder
08. juli 2006 - 12:17 #17
Hvorfor tror du at det er PHP? Det er skal 100% ren ASP ibladet SQL-kommandoer. :^)

Fidusen med denne:

sql = "SELECT @@IDENTITY AS nytID FROM dinTabel"

- er at den udtrækker det id som den forrige INSERT-sætning resulterede i. Den skal normalt helst kaldes umiddelvart efter INSERT'en.

Nej, jeg plejer normalt ikke at lægge et svar før at jeg er sikker på at den som spørger rent faktisk har fået løst sit problem. Derfor foretrækker jeg også med at vente med at svare til at du har afprøvet det. Håber ikke at det gør noget?
Avatar billede terry Ekspert
08. juli 2006 - 18:11 #18
If you have a query in your Access database named myquery then you can select directly for the query. Lets say the SQL in the query is

"SELECT [ID] & [navn] AS brugernavn
FROM tblNavn"

then in your ASP you could use

SELECT * from myQuery


but you can also build your query (SQL) in your ASP
Avatar billede terry Ekspert
08. juli 2006 - 18:12 #19
You can try it, I am VERY sure you can select from a query
Avatar billede nielle Nybegynder
25. juli 2006 - 21:56 #20
torejessen> Har du fået afprøvet det?
Avatar billede torejessen Nybegynder
05. august 2006 - 14:38 #21
Hej igen og undskyld den sene svartid.
Jeg har faktisk lige prøvet at hente data fra en Q som Terry foreslår - og det virker upåklageligt og ligeså let som fra tabeller. Kan slet ikke forstå jeg ikke har prøvet det før, men alle de ASP sider som jeg har kigget på, viser hvordan man henter data fra tabeller...
Sikke en masse tid tid der kunne være sparet, tak for det Terry! :-)
Avatar billede terry Ekspert
23. august 2006 - 10:26 #22
selv tak
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