NYTT. efter att ha fnuttat runt lite recrodseten på uppdateringssidan behövdes det "bara" att sätta in TRIM funktionen i sql-koden så funkade det. Ja, i detta fall måste du ha (i) om du skall ha rätt värden som läggs in i databasen. Om det fungerar varför ändra på det. Se mitt uppskick: Jag provade att lägga till "on error resume next" och se, det fungerar MEN, om jag nu försöker att infoga ett formulärvärde till på tex 0,62 så kan jag väl inte köra split på det värdet? eller är jag helt ut och cyklar :-( Tack för tipset! kollade lite på det men begrep inte mycket :-( men som du skriver är det för ett litet antal poster, hos mig är det ett stort antal som skall uppdateras (ca 9.000 st) JAg vill uppmärksamma dig på att din lösning lätt kan få problem med ordningen. Om man lämnar en kolum tom kommer den att försvinna från listan. På så sätt kommer rader med data hamna i osynk. Nej, textfilen är redan inläst på förgåendesida, dvs den som genererar formuläret som skickas till uppdateringssidan, (den som jäklas) Jag har fått det att funka så långt att det uppdaterar ARTPRICE0 samt UPPDAT fälten i databasen, Varför använder du inte ett comand objekt? Har du inte tittat på mitt exempel? Jo jag tittade som hastigast, och måste erkänna att ja inte begrep ett dugg:-( men jag skall fördjupa mig lite så får vi se vad det blir Har nu tittat på funktionen du beskrivit, men det verkar inte vara riktigt det jag är ute efter.Uppdatera poster i accessbas från textfil
Måste man ha (i) på allt värden som skriv i databasen?
Jag försöker att klura ut hur jag skall kunna uppdatera en accessbas med att hämta data från en semikolonseparerad textfil, och fått det hela till att uppdatera en post i accessbasen.
Problemet är att det skickas flera poster från formuläret, således får jag inte "loopen" att fungerna.
Sida som skickar data ser ut ung.
KOD:
<form action="updateform3.asp" method="post">
<table width="100%" border="1">
<thead>
<tr>
<th ALIGN="LEFT"><b>ARTNO</b></th>
<th ALIGN="LEFT"><b>ARTPURCHASE</b></th>
<th ALIGN="LEFT"><b>ARTGROUP</b></th>
<th ALIGN="LEFT"><b>ARTWEIGHT</b></th>
<th ALIGN="LEFT"><b>BEST</b></th>
<th ALIGN="LEFT"><b>PAGES</b></th>
</tr>
</thead>
<tbody>
<% Do until rs.eof
strARTNO = Rs("ARTNO")
strPAGES = Rs("PAGES")
strGROUP = Rs("ARTGROUP")
strWEIGHT = Rs("ARTWEIGHT")
If Rs("BEST") = False then
check = ""
strBEST = False
ELSE
strBEST = True
check = "checked"
End If
%>
<tr>
<td><input type="text" name="ARTNO" size="24" value="<% = strARTNO %>" class="formfield"></td>
<td><input type="text" name="ARTPURCHASE" size="20" value="<% = Round(Rs("ARTPURCHASE"))%>" class="formfield"></td>
<td><input type="text" name="ARTGROUP" size="20" value="<% = strGROUP %>" class="formfield"></td>
<td><input type="text" name="ARTWEIGHT" size="20" value="<% = Rs("ARTWEIGHT") %>" class="formfield"></td>
<td><input type="checkbox" name="BEST" value="<% = strBEST %>" <% = check %>></td>
<td><input type="text" name="PAGES" size="20" value="<% = Rs("PAGES")%>" class="formfield">
<input type="text" name="DATE" size="20" value="<% = Date()%>" class="formfield"></td>
<input type="hidden" name="ARTID" value="<% = Rs("ARTID")%>">
</tr>
<% Rs.MoveNext
Loop
%>
SLUT KOD
Mottagande sida kodad så här
<%
artnummer = Trim(Request.Form("ARTNO"))
strDAT = Trim(Request.Form("DATE"))
artId = Trim(Request.Form("ARTID"))
strPUR = Trim(Request.Form("ARTPURCHASE"))
artid1 = split(artId,",",-1,1,)
artnr1 = split(artnummer,",",-1,1,)
datum1 = split(strDAT,",",-1,1,)
PUR = split(strPUR,",",-1,1,)
For i = 0 to ubound(artnr1)
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" DATABAS")
SQL = "UPDATE ART_ITEMS SET ARTPURCHASE = " & PUR(i) &", UPPDAT = " & datum1(i) &" WHERE ARTNO = "& artnr1(i) &""
Connection.Execute(SQL)
Response.write (SQL)
next
%>
SQL koden som skriv visar all poster som ska uppdateras men bara en blir uppdaterad
SQL Svar
UPDATE ART_ITEMS SET ARTPURCHASE = 2127, UPPDAT = 2006-04-16 WHERE ARTNO = 7760UPDATE ART_ITEMS SET ARTPURCHASE = 27, UPPDAT = 2006-04-16 WHERE ARTNO = 018774UPDATE ART_ITEMS SET ARTPURCHASE = 14, UPPDAT = 2006-04-16 WHERE ARTNO = 018775UPDATE ART_ITEMS SET ARTPURCHASE = 16, UPPDAT = 2006-04-16 WHERE ARTNO = 018776UPDATE ART_ITEMS SET ARTPURCHASE = 11, UPPDAT = 2006-04-16 WHERE ARTNO = 018777UPDATE ART_ITEMS SET ARTPURCHASE = 38, UPPDAT = 2006-04-16 WHERE ARTNO = 018779UPDATE ART_ITEMS SET ARTPURCHASE = 15, UPPDAT = 2006-04-16 Sv: Uppdatera poster i accessbas från textfil
Varför bara en post ändras kan jag inte svara på - det ser rätt ut, men kanske matchar inte WHERE satserna datan i tabellen?Sv: Uppdatera poster i accessbas från textfil
Programarkivet:Redigerar flera poster på en sidaSv:Uppdatera poster i accessbas från textfil
Dvs. Ett värde hämtas från textfilen som tal "dubbel" och skall således skrivas in i databasen frågan är bara hur?
jag får följande SQL svar på just talet nämnt ovan ARTWEIGHT=0%2C2
det skall vara 0,2
Tips?
TPFH
/PeterSv:Uppdatera poster i accessbas från textfil
Mvh
PeterSv: Uppdatera poster i accessbas från textfil
I mitt exempel har varje input ett unikt namn. Med vilket du undviker detta.
I rubruken står det Uppdatera poster i accessbas från textfil. Men jag ser ingen textfil?Sv:Uppdatera poster i accessbas från textfil
Jag tittade på detta med unikt id och gjorde ett formulärfält typ <input type="text" name="artid<% =Rs("artno")%>" value = "<% =Rs("artno")%>" >
men jag förstår inte hur jag skall plocka upp formlulärvärdet på uppdateringssidan typ Request.Form(" bla bla.
För att vidareutveckla det hela tänkte jag att de gånger formvärdet inte motsvarar den uppdaterade tabellvärdet skall det skrivas i en separat textfil, som byggs på varefter varje uppdatering sker. Men det får bli en senare fråga.
Mvh
PeterSv: Uppdatera poster i accessbas från textfil
men när jag försöker att infoga formulärvärdet BEST (True/False) så ballar det ur, vet inte varför,
litet tips om hur jag skall föra in värdet i SQL satsen?
KOD
strARTNO = Request.Form("ARTNO")
strPRICE0 = Request.Form("ARTPRICE0")
strBEST = Request.Form("BEST")
strDATE = Request.Form("DATE")
ARTID = Request.Form("ARTID")
artno1 = split(strARTNO,",",-1,1)
artid1 = split(ARTID,",",-1,1)
price1 = split(strPRICE0,",",-1,1)
best1 = split(Request.Form("BEST"),",",-1,1)
date1 = split(strDATE,",",-1,1)
For i = 0 To ubound(artno1)
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath(".data.mdb")
SQL = "UPDATE ART_ITEMS SET ARTPRICE0 = " & TRIM(price1(i)) &", UPPDAT = '" & TRIM(date1(i)) &"' WHERE ARTNO = '"& TRIM(artno1(i)) &"'"
Connection.Execute(SQL)
on error resume next
Response.write (SQL)
nextSv:Uppdatera poster i accessbas från textfil
Sv: Uppdatera poster i accessbas från textfil
Mvh
PeterSv: Uppdatera poster i accessbas från textfil
Låt mig göra en "liten" funktionsbeskrivning
1. Databas.mdb är där de produkter finns jag vill uppdatera, i samma databas är även kommaseparerade textfilen inlänkad. textfilen kan jag inte ändra på då den kommer så från min leverantör.
Fältbeskr. (TextFilen inlänkad)
1. ARTNO (text)
2. ARTNAME (text)
3. ARTPURCHASE (Tal, Dubbel)
4. ARTMANU (Text)
5. MINORDER (Tal, Långt heltal)
6. EAN (text)
7. ARTGROUP (text)
8. ARTWEIGHT (Tal, dubbel)
9. BEST (Ja/Nej)
10. PAGES (text)
i den tabellen som skall upppdateras är det bara fälten
ARTPRICE0 = Request.Form("ARTFURCHASE") *1,25
EAN = Request.Form("EAN")
ARTWEIGHT = Request.Form("ARTWEIGHT")
BEST = Request.Form("BEST")
som skall uppdateras, de övriga fälten i textfilen används endast för beräkningar av olika slag
Orsaken till att jag vill ha en sida(form2.asp) med formulärvärden är att ibland innehåller textfilen felaktig information, och vill därför kunna manuellt korrigera detta innan jag skickar posterna till uppdatering.(form3.asp)
Blev någon klokare på denna beskrivning?
Mvh
Peter