Avatar billede Jman Praktikant
02. maj 2002 - 13:50 Der er 15 kommentarer og
1 løsning

opdater 3 felter i SQL DB via drop down

Jeg har en - efterhånden - rimelig stor asp-side, som jeg efterhånden er ved at miste overblikket i..
Jeg kalder en masse felter og jeg skal have mulighed for at ændre 3 af felterne (i samme asp-side) ved hjælp af nogle options i en dropdown-menu.

MIT KALD:
<% If Request.Querystring ("Ordrenummer") > "0" Then %>
<%
Set dbOracle = CreateObject("ADODB.Connection")
get_adno = request.querystring ("ordrenummer")
strConn = "DSN=Oraclebak;Database=pub;uid=XXX;pwd=XXXXX"
dbOracle.Open strConn
strSQL = "Select distinct(a.adno), p.pdate, a.iremarks, p.colour, p.xsize, p.ysize, p.paper, a.ad_type, p.prmethod, p.ready, a.maker, a.salno, p.modifier, p.remarks, p.adrno, a.adrname, a.adrtel, a.receiver FROM pub p, ad a WHERE p.adno=a.adno AND a.adno='"&get_adno&"' order by p.paper, length(p.paper)"
Set rsOracle = CreateObject("ADODB.Recordset")
rsOracle.Open strSQL, dbOracle

%>

de felter der skal kunne ændres er: ad_type, prmethod, ready, og jeg har lavet følgende dropdown-bokse:
<select size="1" name="ddtbl_ad_type" style="font-size: 7pt"></select>
<select size="1" name="ddtbl_prmethod" style="font-size: 7pt"></select>
<select size="1" name="ddtbl_ready" style="font-size: 7pt"></select>

Det skal være sådan at hvis dropdown-feltet =" " (defaultvalg), skal der ikke ændres noget i DB - men ellers skal DB opdateres til valgte option

... Er der nogen der kan hjælpe med dette ?
Avatar billede teamdev Novice
02. maj 2002 - 14:14 #1
<form method="POST">
<select size="1" name="ddtbl" onChange=din_side.asp">
<option value=""> - - </option>
<option value="add">add</option>
<option value="Method">method</option>
<option value="Ready">ready</option>
</select>
</form>

På siden med databasekaldet sætter du noget alá følgende ind:
dim mode
mode = request.form("ddtbl")

og så noget if else sætningsværk.

if mode = "" then
her sætter du koden ind når der ikke skal ske noget i db.

<% if mode = "add" then
din sqlstreng med ad_type ...
else if mode = "Method" then

osv.

Håber det gi'r dig et fingerpeg
Avatar billede Jman Praktikant
02. maj 2002 - 14:18 #2
det skal være på samme side(!)
Avatar billede teamdev Novice
02. maj 2002 - 14:23 #3
Det er det skam også derfor if else sætningerne

i onChange erstatter du din_side.asp med den side dropdown er på:

så kalder den sig selv, og du får værdien fra option boksen med over, og kan så med if sætningen køre det databasekald du vil alt efter hvad brugeren har valgt.
Avatar billede Jman Praktikant
02. maj 2002 - 14:29 #4
OK - enten er jeg ikke med eller også har jeg forklaret mig forkert
De 3 felter, der skal ændres er felter der er udfyldt, men hvor man skal kunne ændre DB-feltets indhold.

eksempel:
adtype: S    |    prmethod: K    |    ready: E

S, K & E, skal man så kunne ændre/opdatere, men ved hjælp af dropdown-bokse, da jeg skal kunne bestemme feltets kodebogstav
Avatar billede teamdev Novice
02. maj 2002 - 14:37 #5
altså alle 3 felter skal ændres på en gang?
Avatar billede Jman Praktikant
02. maj 2002 - 14:51 #6
nej, kun hvis der er valgt en anden bogstavkode i dropdown boksen (der er en dropdownboks for hver):
eksempel:

adtype: S    |  prmethod: K  |  ready: E
dropdown \/  |  dropdown \/  |  dropdown \/

[ret]
Avatar billede Jman Praktikant
02. maj 2002 - 14:52 #7
ville det hjælpe med et skærmdump ?
Avatar billede teamdev Novice
02. maj 2002 - 14:59 #8
ja prøv at smide et skærmdump
Avatar billede Jman Praktikant
02. maj 2002 - 15:16 #9
ligger her: http://www.jman.dk/test/retordre.htm
Med en lille forklaring i bunden
Avatar billede teamdev Novice
02. maj 2002 - 15:25 #10
Kan du ikke "bare" opdatere alle 3 felter uanset om der er foretaget ændringer eller ej?
Avatar billede Jman Praktikant
02. maj 2002 - 15:28 #11
tja, det er jo det jeg ikk ved :)
slutresultatet skal bare være, at hvis man kun opdatere i det ene felt, må de andre 2 ikke blive ændret
Avatar billede teamdev Novice
02. maj 2002 - 15:53 #12
OK. Tror jeg har fattet det.

Det der vil ske hvis man blot opdatere alle 3 uden at der er foretaget valg i eks. de 2 første, vil de 2 førstes værdi være blank. Og det er jo ikke så hensigtsmæssigt.

Der er jo den mulighed at du laver de 3 dropdowns i separate fomrularer og bruger onchange, og en if else sætning

noget i denne her stil

<%
Annoncetype = request.form("Annoncetype")
if Annoncetype = "" then
Annoncetype = "0"
end if
Produktionssted = request.form("Produktionssted")
if Produktionssted = "" then
Produktionssted = "0"
end if
Status = request.form("Status")
if Status = "" then
Status = "0"
end if
%>

så sætter du de 3 ind på siden
<form method="POST">

<select size="1" name="Annoncetype" onChange=din_asp.asp>
<option value="0" selected></option>
<option value="1">add</option>
<option value="2">method</option>
<option value="3">ready</option>
</select>
</form>

<form method="POST">

<select size="1" name="Produktionssted" onChange=din_asp.asp>
<option value="0" selected></option>
<option value="1">add</option>
<option value="2">method</option>
<option value="3">ready</option>
</select>
</form>
<form method="POST">

<select size="1" name="Status" onChange=din_asp.asp>
<option value="0" selected></option>
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
</select>
</form>


får dine sqlsætninger til opdatering sætter du følgende ind

if Annoncetype > 0 then
sqlsætning der opdaterer annoncetypen
end if

if Produktionssted > 0 then
sqlsætning der opdaterer Produktionssted
end if

if Status > 0 then
sqlsætning der opdaterer Status
end if
Avatar billede Jman Praktikant
02. maj 2002 - 16:43 #13
hmm - jeg kan godt se ideen i det, men det virker bare ikke :(
fejl:
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "D"]'

/prepres/sapss/default_arb_copy.asp, line 275

- Den har jeg aldrig set før
Avatar billede Jman Praktikant
02. maj 2002 - 17:29 #14
jeg har fundet mismatch, hvilket skyldes at feltet, der skal opdaters ikke må indeholde tal.
-----
Nu har jeg lavet den således:
ad_type = rsOracle("ad_type")
if ddtbl_ad_type <> ad_type then
SQLstmt = "UPDATE DISTINCTROW ad_type SET ad_type = '" & ddtbl_ad_type & "' WHERE adno=" & request("adno")
'SQLstmt = SQLstmt & "VALUES ('" & request.form("ddtbl_ad_type") & "')"
end if

Men den opdaterer ikke *hulk-hulk*
Avatar billede teamdev Novice
03. maj 2002 - 07:40 #15
Der er en lille fejl i din sql

WHERE adno=" & request("adno")

istedet for at sætte dine requests i sql sætningen kan du jo definere variabler tidligere

dim ddtbl_ad_type
dim adno

ddtbl_ad_type = request.form("ddtbl_ad_type")
adno = request.form("adno")

nu er jeg ikke sikker på hvor du får adno fra!? Jeg har antaget at det var fra formularen, men det kunne jo også være fra et recordset, alá:
adno = rsOracle("adno")
WHERE adno='" & adno & "'"

er ikke helt sikker på "gramatikken" ved en oracle db
Avatar billede Jman Praktikant
03. maj 2002 - 08:05 #16
tak for hjælpen!
Du fik mig i hvert fald på rette spor!
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