Avatar billede vagngart Nybegynder
03. august 2001 - 19:31 Der er 21 kommentarer og
1 løsning

update af flere records (arrays ?)

jeg har en dynamisk form hvor man gerne skulle kunne opdater flere poster på en gang.

når jeg skriver sql\'en ud ser den ud som flg. :

update products set prod_number=\'987-7, oki-18765, okiled-bw-6ex\', prod_name=\'HP farve inkjet printer, Toner til Oki 6EX led printer, Oki s/h led printer\', prod_desc=\'HP farve inkjet printer, Toner til Oki 6EX led printer, Oki s/h led printer\', prod_image=\'foto.gif, foto.gif, foto.gif\' where prod_id=1, 2, 3

Men hvordan får jeg den delt op så den kan opdatere de respektive poster ???

Har en ide om noget med arrays men det er jeg ikke nogen ørn til :-)

Avatar billede erikjacobsen Ekspert
03. august 2001 - 19:33 #1
where prod_id in (1,2,3)

tror jeg nok virker i Access.
Avatar billede vagngart Nybegynder
03. august 2001 - 19:35 #2
Ja tak erikjacobsen :-)

men problemet er at jeg ikke på forhånd kender hvilke prod_id der er og hvor mange
Avatar billede erikjacobsen Ekspert
03. august 2001 - 19:38 #3
Nå, hvor pokker skulle jeg vide det fra. Hør, hvis du kan formulere dit
problem, så kan vi løse det - ellers kan vi jo ikke.
Avatar billede vagngart Nybegynder
03. august 2001 - 19:50 #4
sorry !
jeg skal prøver at omformulere

Problemet er som nævnt at jeg ikke på forhånd kender antal af poster og hvilket id (prod_id) de har og at jeg gerne skulle kunne opdatere hele dynen i et hug (det ville være lidt mere elegant en hver post for sig)

Her er hele mit script:
\'-----------------------------------------
<%@ Language=VBScript %>
<%
            set conn=server.CreateObject (\"ADODB.Connection\")
            conn.Open (\"kaspro\")

    if Request.Form(\"gem\")=\"GEM\" then
    \' her skulle der være noget der splitter
        sql=\"update products set prod_number=\'\"&Request.Form(\"prod_number\")&\"\', prod_name=\'\"&Request.Form(\"prod_name\")&\"\', prod_desc=\'\"&Request.Form(\"prod_desc\")&\"\', prod_image=\'\"&Request.Form(\"prod_image\")&\"\', prod_inactiv=\'\"&Request.Form(\"prod_inactiv\")&\"\'  where prod_id=\"&Request.Form(\"prod_id\")&\"\"
        conn.execute(sql)
    end if
%>
<HTML>
<HEAD>
<META NAME=\"GENERATOR\" Content=\"Microsoft Visual Studio 6.0\">
</HEAD>
<BODY>
<table border=1 width=100% height=100%>
<tr>
<td valign=middle align=center>

<h3>Her kan du redigere dit varekatalog</h3>

    <table border=1 width=200px>
    <tr>
    <td>Varenummer</td>
    <td>Navn</td>
    <td>Beskrivelse</td>
    <td>Billede</td>
    <td>Pris</td>
    <td>Udgået</td>
    <td></td>
    </tr>       
    <form action=\"\" method=post  name=form1>
    <%
        set ProdSet=server.CreateObject(\"ADODB.RecordSet\")
        sql=\"select * from products\"
        ProdSet.Open sql, conn,3,,1
        while not ProdSet.EOF        
    %>
    <tr>
    <td><input type=hidden name=prod_id value=\"<%= ProdSet(\"prod_id\")%>\"><INPUT type=\"text\" id=text1 name=prod_number value=\"<%=ProdSet(\"prod_number\")%>\"></td>
    <td><INPUT type=\"text\" id=text2 name=prod_name value=\"<%= ProdSet(\"prod_name\")%>\"></td>
    <td><TEXTAREA rows=2 cols=20 id=textarea1 name=prod_desc><%=ProdSet(\"prod_desc\")%></TEXTAREA></td>
    <td><INPUT type=\"text\" id=text3 size=7 name=prod_image value=\"<%= ProdSet(\"prod_image\")%>\"></td>
    <td><input type=text size=7 name=prod_price value=\"<%= ProdSet(\"prod_price\")%>\"></td>
    <td>
        <select name=prod_inactiv>
            <option selected> <% if ProdSet(\"prod_inactiv\")=No then
                                                                    Response.Write \"NEJ\"
                                                                    else
                                                                    Response.Write \"JA\"
                                                                    end if     %></option>
            <option value=\"yes\">Ja</option>
            <option value=\"no\">Nej</option>
        </select>
    </td>
    <td></td>
    </tr>
  <%
        ProdSet.MoveNext
        wend
  %>
  <tr>
  <td colspan=8 align=right><input type=submit name=\"gem\" value=\"GEM\"></td>
  </tr>
  </form>
    </table>
</td>
</tr>
</table>
</BODY>
</HTML>
\'--------------------------
håber du kan hjælpe
Avatar billede erikjacobsen Ekspert
03. august 2001 - 19:58 #5
\' her skulle der være noget der splitter

hvor kommer data fra?
Avatar billede vagngart Nybegynder
03. august 2001 - 20:05 #6
UPS her går det rigtigt godt
\' her skulle der være noget der splitter
var en kommentar til mig selv
og
data kommer fra formen i dokumentet
Avatar billede erikjacobsen Ekspert
03. august 2001 - 20:05 #7
Ja, ja, ja, det kan jeg godt se - men hvilke data? Hvordan??
Avatar billede vagngart Nybegynder
03. august 2001 - 20:20 #8
data hentes ind i formen (fra tabellen \"products\" i databasen \"kaspro\" ) i linien lige efter <form .... >

er det det du mener ?
Avatar billede erikjacobsen Ekspert
03. august 2001 - 20:56 #9
Må vi se?
Avatar billede vagngart Nybegynder
03. august 2001 - 20:58 #10
Måske det er mig der er tungnem -

men hvad nærmere er det du vil se.

Alle oplyninger ligge jo i scriptet som vist oven for.
Avatar billede erikjacobsen Ekspert
03. august 2001 - 21:00 #11
hmm, nå ja, det gør de vel :)
Avatar billede vagngart Nybegynder
03. august 2001 - 21:19 #12
100 point extra til den der kan løse problemet.
Avatar billede sbm Nybegynder
04. august 2001 - 00:07 #13
Jeg kan ikke rigtig forstå den bagvedliggende problemstilling...

Hvad er idéen i at opdatere flere forskellige varer med præcis de samme data. Burde de så ikke bare være slået sammen til et enkelt id-nummer, som så har data for dem alle?

Er det blot WHERE-delen du gerne vil have opbygget på en smart måde? Det ser ud til at du har hånd om resten...?
Avatar billede erikjacobsen Ekspert
04. august 2001 - 00:12 #14
:) sbm - jeg kiggede på det for et par timer siden, og nåede vist nok frem til
noget lignende. De skal da ikke allesammen have de samme data, vel?
Hver vare skal opdateres med sine egne oplysninger?

Der er flere løsninger, men man kunne jo evt. give felterne forskellige navne (sætte
et løbenummer på).
Avatar billede sbm Nybegynder
04. august 2001 - 00:26 #15
Hmmmm. Jeg sad lige og kiggede i det aller øverste eksempel... Der er tre varenumre, varenavne, tre beskrivelser osv... Det der søges er altså en måde til at sætte:

Record 1:
Prod_id = 1
Prod_number = 987-7
Prod_name=HP farve inkjet printer
Prod_desc=HP farve inkjet printer

Record 2:
Prod_id = 2
Prod_number = oki-18765
Prod_name = Toner til Oki 6EX led printer
Prod_desc = Toner til Oki 6EX led printer

og tilsvarende data for den tredje record...

Det vil du så gøre med EN sql-sætning som du fyrer af...? Den går vist ikke Granberg. I hvert fald ikke det jeg ved af. Der må du ud i en løkke hvor du opbygger de enkelte sql-sætninger, og så laver dine updates.
Avatar billede erikjacobsen Ekspert
04. august 2001 - 00:31 #16
Man kan evt gemme hvor mange records man har i formen i en hidden variabel i
bunden, så skulle den være lige til at gå til:

  for i=1 to request.form(\"antal\")
    ... noget med ... request.form(\"prod_id\" & i)
    ...
    ... fyr sql-en af
  next
Avatar billede sbm Nybegynder
04. august 2001 - 00:43 #17
Tja. Eller...

do while not request.form(\"prod_id\" & i) == \"\"
  ...opdater rækken...
loop

Men det er vel bare et spørgsmål om smag... :-)
Avatar billede sbm Nybegynder
04. august 2001 - 00:44 #18
Hov. Der skal nok også lige lægges en enkelt til i inde i while løkken. Ellers kommer den ikke så langt. :-)
Avatar billede erikjacobsen Ekspert
04. august 2001 - 00:45 #19
Ja, eller bruge request.form som en collection
Avatar billede vagngart Nybegynder
04. august 2001 - 12:00 #20
JA
fidusen var netop at opdatere hver vare med sine egen data og at gøre det i et hug :-)
Kigger på jeres forslag og vender tilbage senere.

men tak for hjælpen!
Avatar billede vagngart Nybegynder
04. august 2001 - 20:09 #21
>> sbm
du havde løsningen :-)

men nu kan jeg tilsyneladende ikke tildele dig points så hvo\'n klarer vi den ?
Avatar billede vagngart Nybegynder
18. august 2001 - 08:33 #22
Da der ikker er nogen af jer der vil have point
giver jeg dem til mig selv :-)
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