webForumDet fria alternativet

Update?

26 svar · 739 visningar · startad av tomas21

tomas21Medlem sedan feb. 2003130 inlägg
#1

Hej igen!

Nu e jag i farten igen :)

Mitt problem nu är att jag har ett formulär som jag fyller i och sen
skickar iväg för att lägga in nya saker i databasen.

Vanligvis när man uppdaterar sidor har man tex.

rs.addnew
request.form("name") = rs("name)
osv osv....
rs.update

Men mina sidor bygger formulären automatiskt efter hur tabellen
ser ut vilket innebär att jag inte kan använda mig av koden ovan.

Jag har tänkt denna algoritm:

SQL = "SELECT * FROM " & Request.QueryString("tabell")
rs.connect..............

rs.addnew
for each field in request.form
rs("fieldname")=request.form("fieldname")
rs.update
next

Alltså det som händer är att utefter querystring("tabell") så ska koden se vilka fält det finns i databasen och sedan skapa en rs.addnew efter det. Men jag får inte det att fungera.
Fördelen med detta är att man slipper göra en rs.addnew för varje tabell man ska uppdatera utan man avänder sig endast utav samma kod. Samt att man slipper hårdkoda.

Jag hoppas verkligen att någon kan hjälpa mig.

LarsGMedlem sedan dec. 200012 464 inlägg
#2
rs.addnew
for each fld in request.form
rs(fld.name()) = request.form(fld.name())
next
rs.update
tomas21Medlem sedan feb. 2003130 inlägg
#3

Men vad är fld. Ska man deklarera den på något sätt. Är det något innbyggt i asp som betyder fält eller??

tomas21Medlem sedan feb. 2003130 inlägg
#4

LarsG när jag använder koden du skrev får jag upp medelandet:

objekt krävs "fld"

Hur ska man göra då?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#5

Nej, du behöver inte deklarera 'fld'.
Testa det här:

rs.addnew
for each fld in request.form
rs(fld) = request.form(fld)
next
rs.update

LarsG; man behöver väl inte .name() när man anropar 'fld'?

tomas21Medlem sedan feb. 2003130 inlägg
#6

Hej override har testat med koden som du anger. Men det fungerar inte. fld kan man endast deklarera som : dim fld
Med koden som override föreslog får jag ett felmedelande att det är typblandnings fel?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#7

Vad är det för datatyp på den data som kommer från request.form(fld) samt datatyp på fältet i databasen?

tomas21Medlem sedan feb. 2003130 inlägg
#8

det är allt möjligt från datum, text, pm till true/false och tal.

tomas21Medlem sedan feb. 2003130 inlägg
#9

jag har löst det problemet men en annan sak jag undrar över är hur man kan lista upp ett formulär med innehåll tex. för att uppdatera en sida.

Det hela funkar såhär: Jag skickar med två variablar ett som är id (som bestämmer vilken rad i tabellen vi vill ändra) det andra är tabell (som bestämmer vilket tabell sql satsen ska marker)
Sen vill jag loopa fram ett formulär utefter detta. I formuläret kommer det att finnas det datat som för nuvarande finns i just raden med det id. Sen är det bara att ändra i formuläret och skicka vidare för att ändra i databasen.

Så frågan är hur loopar jag fram formuläret med datat i ??

JosefMedlem sedan mars 20023 561 inlägg
#10

Vad är det du ska loopa. Det är väl bara en post med ID´t?

tomas21Medlem sedan feb. 2003130 inlägg
#11

Jag vill få fram ett formulär.

Vanligtvis vid formulär hantering så anger man vilket record som man vill öppna tex:

Do Until RecSet.EOF

Repsonse.wr........ "Value: " & RecSet("namn")

osv..

Det är hårdkodad eftersom RecSet("namn") är för definierat.

Men eftersom mitt skript tar emot en variabel som heter tabell som innebär att sql satsen som selectar tabellen i databasen ändras beroende på vad tabell har för värde så går det inte att använda metoden ovan. Det innebär att jag vill ta fram ett formulär ur tabellen tabell där jag markerar den raden i tabellen tabell med id nummret id. Formuälret som jag då vill få fram ska innehålla det som redan finns i databasen.

JosefMedlem sedan mars 20023 561 inlägg
#12

Du vill alltså få ett formulärsfält för varje kolumm i tabellen innehållande värdet från den matchande raden?

tomas21Medlem sedan feb. 2003130 inlägg
#13

Så här ligger det till. Hela sidan sköts dynamisk genom att man har angett en tabell som en querystring.

Jag har en post i en tabell som jag vill ändra. När jag klickar på ändra så ska det dyka upp ett formulär för just den posten. Innehållet för just den posten kommer att dyka upp i formuläret så att man kan ändra den.

Tanken hur detta formulär ska komma fram är att, när man klickar på länken ändra så skickas det med två querystring en för id nummret på just den posten och ett som anger vilken tabell i databasen posten finns i. För att få fram formuläret måste man då göra ett skript som kollar igenom just den tabellen med tex. adopenschema eller adopencolumns, detta för att man ska få ut rätt typer av formulär fält. Sen när den har skrivit ut formuläret så koden markera exakt den post som tillhör det id nummer som skickades med och skriva ut innehållet så att det syns i formuläret. Jag har gjort ett skript som skriver ut formuläret, då använder jag mig av adOpenColumns. Men jag vet inte hur man kombinerar detta med att få ut innehållet för posten så att det finns i formuläret.

Jag tror att Josef förstod ungefär vad jag menar.

Hoppas ni förstår vad jag menar.

solbulleMedlem sedan mars 20015 287 inlägg
#14

Hur ser ditt skript/formulär ut nu? Är det egentligen inte bara en vanlig databashämtning du eftersöker nu? (Fast den ska väl iofs ihopfogas med formulärsutskrivningen ja...)

tomas21Medlem sedan feb. 2003130 inlägg
#15

Jag använder typ:

strSQL = "SELECT " & objRS("COLUMN_NAME") & " FROM " &
 Request.QueryString("table")
Set objRS2 = objConn.Execute(strSQL)

While objRS2 Not EOF

objRS2:<input type="text" size="20" value=""><br>

Wend

Ni ser att value är tom.
objRS2 har ju endast markerat vad fältet heter mha column_name
Det jag vill göra är som jag sa tidigare att jag kompleterar denna kod med att i sql satsen på något sätt markera den postet med id nummret och sedan skriva ut formuläret som ovan samt lägga in i value det som just det fältet innehåller alltså inte namnet på fältet utan värdet. EX:

Namn : [Tomas]

Namn är i detta fall namnet på fältet medan Tomas är värdet i just det fältet.

tomas21Medlem sedan feb. 2003130 inlägg
#16

Tack alla för era svar men jag har löst det.

@ndersMedlem sedan juni 200032 969 inlägg
#17

Och då berättar man också hur man löste det.

tomas21Medlem sedan feb. 2003130 inlägg
#18

Sorry guys ska skriva ut det så småningom!!!

garkoMedlem sedan apr. 200339 inlägg
#19

hmmm det låter kul att kunna

någon som vet hur man kodar den delen som sparar information i en databas dynamisk från ett formulär.
så som tomas 21 skrev längre upp.

garkoMedlem sedan apr. 200339 inlägg
#20

vad kan man skriva istället för rs(fld)

rs.addnew
for each fld in request.form
rs(fld) = request.form(fld)
next
rs.update

jag har skrivit koden

RecSet.addnew
for each fld in request.form
RecSet("fld") = request.form("COLUMN_NAME")
next
RecSet.update

klagar på raden där rs(fld) finns :
Objektet kunde inte hittas i mängden med det begärda namnet eller numret.

jag har även provat med x.name men funka inte.

vad tror ni vad finns det för möjligeter?

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)