Avatar billede jps6kb Novice
23. januar 2004 - 11:03 Der er 38 kommentarer og
1 løsning

Tilføge data til én tabel og verficere med en anden (Access)

Hvordan gør man :


Udfylde en formular med navn, adresse, postnr, fødselsdato...
Sender det, og bliver tilføjet i en tabel (bruger)
MEN! kun hvis fødselsdato (birth) findes i en anden tabel i samme db (birth)
Avatar billede sbm Nybegynder
23. januar 2004 - 11:08 #1
Jeg antager at du har kaldt dit parameter for birth

Så laver du et databaseoplag i den tabel, hvor fødselsdatoen meget gerne skulle eksistere.

sql = "SELECT COUNT(*) FROM TABELNAVN WHERE BIRTH = '" & Request("birth") & "'"

Så checker du på at antallet er større end nul, og hvis det er tilfældet, kan du opbygge din INSERT på normal vis.
Avatar billede sbm Nybegynder
23. januar 2004 - 11:11 #2
Det kan godt være meget svært at se forskel på ' (singlequote) og " (doublequote) i ovenstående eksempel. Jeg prøver lige at tydeliggøre det her:

sql = [doublequote]SELECT COUNT(*) FROM TABELNAVN WHERE BIRTH = [singlequote][doublequote] & Request([doublequote]birth[doublequote]) & [doublequote][singlequote][doublequote]


:-)    øhhh jeg mener [kolon][minus][slutparantes]
Avatar billede jps6kb Novice
23. januar 2004 - 11:56 #3
2 sek. jeg har skrevet navnene ldt forkert... men idéen er den samme...

TABEL1 : event :

id /autonum
navn /txt
adr /txt
postnr /txt
by /txt
klub /txt
birth /txt
event /txt

TABEL2 : user :
id /autonum
navn /txt
birth /txt

Dvs. at i min "updateuser.asp" der skriver jeg
sql = "SELECT COUNT(*) FROM user WHERE BIRTH = '" & Request("birth") & "'"

... og så update sekvensen ??? Men skal man ikke også kalde den anden tabel for at update ???
Avatar billede jps6kb Novice
23. januar 2004 - 11:58 #4
event er i øvrigt en dropdown menu, hvis det gør nogen forskel ???
Avatar billede sbm Nybegynder
23. januar 2004 - 12:25 #5
Nu er jeg ikke heeeelt sikker på hvad du mener. :-)

Jeg kan forstå at du forsøger at opdatere en allerede eksisterende række i din event tabel?

Der er altså rettet i nogle data, som så skal lægges ind?

Men kun hvis fødselsdatoen allerede eksisterer i user-tabellen?
Avatar billede jps6kb Novice
23. januar 2004 - 12:36 #6
Nej nej... tror det er mig der kvajer rundt i det...

Jeg vil oprette nye poster... Altså man udfylder skemaet, trykker send, scriptet ser om man eksisterer i "user" vha. birth og hvis man gør, så bliver de nye oplysninger tilføjet i db'en... der skal ikke rettes ... men tilføjes.
Avatar billede sbm Nybegynder
23. januar 2004 - 12:46 #7
Okay....

Du skal stadig lave to database tilgange. En SELECT og en INSERT.

Først laver du din

sql = "SELECT COUNT(*) FROM user WHERE BIRTH = '" & Request("birth") & "'"

og fyrer den af. Så henter du den første (og eneste) række ud, og checker værdien. Hvis den er større end nul, har du mindst 1 bruger med denne fødselsdag.

Nu lukker du dine objekter ned, og laver en NY databasetilgang, hvor du laver din INSERT del, men KUN hvis det første opslag gav en værdi over nul.

Du må evt. smaske din .asp kode ind her, og så kan jeg forsøge at rette den til. Jeg har bare lige nu mulighed for at checke det af om det virker.
Avatar billede jps6kb Novice
23. januar 2004 - 12:49 #8
Har ikke lavet det store på den endnu, for jeg vidste ikke helt hvordan jeg skulle gå til det, men jeg kigger lige på det...
Avatar billede jps6kb Novice
23. januar 2004 - 12:58 #9
HTML:

<HTML>
<HEAD>
<TITLE>Test af indtastning !!</TITLE>
</HEAD>

<BODY BGCOLOR="c3c3c3">

<FORM ACTION="update.asp" METHOD="post">
Navn : <INPUT TYPE="text" NAME="navn" SIZE="20"><BR>
Adresse : <INPUT TYPE="text" NAME="adr" SIZE="20"><BR>
Postnr : <INPUT TYPE="text" NAME="postnr" SIZE="20"><BR>
By : <INPUT TYPE="text" NAME="by" SIZE="20"><BR>
Klub : <INPUT TYPE="text" NAME="birth" SIZE="20"> ** ex. 050852-0830 **<BR>
Begivenhed :
<select class="dropdown" name="Place" >
<option selected="selected" value="1">Begivenhed 1</option>
<option value="2">Begivenhed 2</option>
</select>
<BR>
<INPUT TYPE="submit">
</FORM>
</BODY>
</HTML>

update.asp :


????????????
Avatar billede jps6kb Novice
23. januar 2004 - 13:00 #10
Jeg aner sQ ikke hvordan man gør ... ? :o/
Avatar billede sbm Nybegynder
23. januar 2004 - 13:01 #11
Ok. Jeg kan give dig noget pseudo-kode at gå ud fra. Hvis du skal have noget mere konret, kan jeg næppe hjælpe dig idag. Det kniber med tiden. :-(

Du ved hvordan du laver et database-opslag og henter en eller flere værdier ud?
Du ved hvordan du laver en insert i en tabel?
Avatar billede jps6kb Novice
23. januar 2004 - 13:03 #12
Ja... det ved jeg... det er det der verificering ???

Altså det der står inden :

<%
SQL = "UPDATE event SET [navn] = '" & request.form("navn") & "', " .....
Avatar billede sbm Nybegynder
23. januar 2004 - 13:10 #13
Ok. Så forsøger du følgende

Som det første laver du din SELECT.

    sql = "SELECT COUNT(*) FROM user WHERE BIRTH = '" & Request("birth") & "'"

osv. osv... Du henter resultatet ud efter alle gyldne regler.
Så laver du

    if (RS(1) > 0) then

og her indsætter du al den fornødne kode til at lave din insert (update)
Efter det er gjort, og du har lukket databaseforbindelse og det hele laver du

    else
        response.write "Brugeren kan ikke findes."
    end if
Avatar billede jps6kb Novice
23. januar 2004 - 13:12 #14
.

    sql = "SELECT COUNT(*) FROM user WHERE BIRTH = '" & Request("birth") & "'"

osv. osv... Du henter resultatet ud efter alle gyldne regler.

Det er der vi har balladen. Kan du ikke lave koden ?? Det haster ikke så meget ?? Jeg er vist ude hvor jeg ikke kan bunde ;)
Avatar billede sbm Nybegynder
23. januar 2004 - 13:15 #15
Ok. Så kan du formodentligvis heller ikke lave update delen? :-)

Jeg strikker et eksempel sammen til dig.
Avatar billede sbm Nybegynder
23. januar 2004 - 14:00 #16
Smid lige navnet på din database fil samt en angivelse af hvor den ligger i forhold til dine asp filer.

Jeg får nok først lavet dit eksempel når jeg er hjemme. (ca. 5-6 tiden)
Avatar billede jps6kb Novice
23. januar 2004 - 15:07 #17
Jeg har en connect.asp fil... som henviser til databasen.
Avatar billede sbm Nybegynder
23. januar 2004 - 16:17 #18
Glimrende. Kan du evt. cut/paste den hertil, så jeg kan se hvor meget der er lavet på forhånd?
Avatar billede jps6kb Novice
26. januar 2004 - 08:17 #19
<%
Set MyConn = Server.CreateObject("ADODB.Connection")
Myconn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../db/dbase.mdb")
%>

There U go... den virker... bruger den til at hente data fra samme DB.
Avatar billede jps6kb Novice
30. januar 2004 - 10:21 #20
Anything ????
Avatar billede sbm Nybegynder
30. januar 2004 - 10:30 #21
Hov det må du undskylde. Jeg havde ikke set at du havde svaret. Jeg mindes ikke at have fået nogen mail efter dit indlæg 26/01

Jeg smider noget sammen, men det bliver næppe før i aften. Ok?
Avatar billede jps6kb Novice
30. januar 2004 - 10:42 #22
Det er helt i orden... takker...
Avatar billede sbm Nybegynder
30. januar 2004 - 23:18 #23
Hov. Nu hvor jeg sidder og strikker noget sammen, ser jeg at du har flere felter der går igen i begge tabeller....? ØNSKER du virkelig redundante data, eller er det nok at lave en reference fra den ene tabel til den anden?
Avatar billede jps6kb Novice
31. januar 2004 - 16:19 #24
Navn og birth er redundant ja... du må godt kalde den... ehh... noget andet i user-tabellen
Avatar billede jps6kb Novice
31. januar 2004 - 16:20 #25
Det har jeg egentlig bare aldrig tænkt på som værende et problem, men det kan jeg da godt se... ;)
Avatar billede jps6kb Novice
02. februar 2004 - 08:18 #26
M'jallo...?
Avatar billede sbm Nybegynder
02. februar 2004 - 10:06 #27
Dav du. Efter jeg skrev mit spørgsmål 30/01 10:42:48 har jeg ikke fået taget tid til at kigge nærmere på det.

Jeg smider et spørgsmål med en ref. til dette, og så ser vi om der er en anden der vil hjælpe og få pointene. Ellers vil jeg se om jeg får lidt fritid i aften.

Jeg antager at "det kan jeg da godt se" betyder at det vil være en idé at undgå de redundante data?
Avatar billede sbm Nybegynder
02. februar 2004 - 10:08 #28
Avatar billede jps6kb Novice
02. februar 2004 - 12:12 #29
Redundant data -> Ja bestemt... ;)
Avatar billede eagleeye Praktikant
02. februar 2004 - 20:34 #30
Jeg spørge lige..
1. Du vil tjekke i tabellen user om en fødselsdag findes i kolonnen birth som bliver indtastet på en form ?
2. Hvis fødselsdage ikke findes, indsætte navn, bynavn, adress, fødselsdag i tabellen evet ?
3. Hvis fødselsdage findes i tabellen user skal der ikke ske noget ?
Avatar billede jps6kb Novice
03. februar 2004 - 08:19 #31
Nej... hvis fødselsdagen IKKE findes, skal der IKKE ske noget...
Hvis den findes, skal de indtastede data tilføjes i event.
Avatar billede jps6kb Novice
03. februar 2004 - 10:23 #32
Altså tabellen 'user' skal ikke opdateres via. formularen... kun 'event', og den skal kun opdateres hvis ham/hende som indtaster er oprettet i tabellen 'user'.
Avatar billede eagleeye Praktikant
03. februar 2004 - 19:11 #33
Ok så misforstod jeg det først :)
men her er et eksempel på din kode.
Det skal bare puttes ind i en fil.



<% session.LCID=1030 %>
<%
if Request.ServerVariables("REQUEST_METHOD") = "POST" then
  Set MyConn = Server.CreateObject("ADODB.Connection")
  Myconn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../db/dbase.mdb")

  dato = Replace(Request.Form("birth"),"'","")
 
  SQL = "select birth from [user] where birth = '" & dato & "'"
  Set rs = MyConn.Execute(SQL)
  if not rs.EOF then   
    navn = Replace(Request.Form("navn"),"'","''")
    adr = Replace(Request.Form("adr"),"'","''")
    postnr = Replace(Request.Form("postnr"),"'","")
    by = Replace(Request.Form("by"),"'","''")
    kulb = Replace(Request.Form("klub"),"'","''")
    eventstr = Replace(Request.Form("Event"),"'","''")
   
    SQL = "insert into event (navn,adr,postnr,[by],klub,birth,event) values ("
    SQL = SQL & "'" & navn & "', "
    SQL = SQL & "'" & adr & "', "
    SQL = SQL & "'" & postnr & "', "
    SQL = SQL & "'" & by & "', "
    SQL = SQL & "'" & kulb & "', "
    SQL = SQL & "'" & dato & "', "
    SQL = SQL & "'" & eventstr & "')"
       
    MyConn.Execute(SQL)
  end if
  MyConn.Close
  Set MyConn = Nothing
  Response.Redirect(Request.ServerVariables("SCRIPT_NAME")) 
end if
%>

<html>
<head>
<title></title>
</head>
<body>
<center>
<form method="POST" action="<%=Request.ServerVariables("SCRIPT_NAME")%>">
<table>
<tr><td>Navn</td><td><input type="text" name="navn"></td></tr>
<tr><td>Adresse</td><td><input type="text" name="adr"></td></tr>
<tr><td>Postnr</td><td><input type="text" name="postnr"></td></tr>
<tr><td>By</td><td><input type="text" name="by"></td></tr>
<tr><td>Klub</td><td><input type="text" name="klub"></td></tr>
<tr><td>Fødselsdag</td><td><input type="text" name="birth"></td></tr>
<tr><td>Event</td><td><input type="text" name="event"></td></tr>
<tr><td>&nbsp;</td><td><input type="submit" name="send" value="gem"></td></tr>
</table>
</form>

</body>
</html>
Avatar billede sbm Nybegynder
04. februar 2004 - 09:42 #34
Jeg har stadig et halvt øje med fra sidelinien. ;-)

Ville det ikke være en god idé at include hans eksisterende connect.asp istedet for at kode forbindelsen til databasen. På den måde vil det kun være nødvendigt at rette et enkelt sted, såfremt der en dag skal forbindes til en anden database, eller sågar en helt anden databasetype...?

Ikke for at være picky-picky... Jeg er glad for at en anden kunne afse tiden, hvor jeg desværre ikke kunne. :-)
Avatar billede jps6kb Novice
19. februar 2004 - 08:35 #35
Nu har jeg endelig fået det testet... min server var gået lidt kold ;)

Det virker ikek så'n rigtigt...
Hvis jeg indtaster en ikke-eksisterende fødselsdato returnerer den til samme side... (reloader) men hvis datoen eksisterer kommer der en "Siden kan ikke vises" og jeg har slået "Vis uskadelige HT...." til... ???
Hvad er der galt ?
Avatar billede eagleeye Praktikant
19. februar 2004 - 22:05 #36
Koden skal bare puttes ind i en fil?

Du skal slå den fra :
funktioner -> internetindstillinger -> avanceret -> fjern kryds i "vis meddelelse om uskadelige http-fejl"
Avatar billede jps6kb Novice
20. februar 2004 - 08:05 #37
Åååårh... det er klart...

Microsoft JET Database Engine error '80004005'

Operation must use an updateable query.

/oksbol/tilmeld.asp, line 28


Har i øvrigt rettet kulb 2 steder til klub... går ud fra at det er en trykfejl ?
Avatar billede jps6kb Novice
20. februar 2004 - 08:21 #38
Jeg har fundet fejlen... det er ikke scriptet, men den server jeg smider det op på. Har testet det på en anden server...

Smid lige et svar, og du skal få point!! ;)
Avatar billede eagleeye Praktikant
21. februar 2004 - 23:01 #39
Ok, her er et svar :)
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
Kurser inden for grundlæggende programmering

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