Avatar billede sesam Nybegynder
17. juli 2002 - 15:17 Der er 38 kommentarer og
1 løsning

recordset + 1

Kan man ikke det her?
altså tage den sidste record og plusse med 1?
<%
varetypeid = rs("varetypeid")
if rs.eof then
  varetypeid =  "varetypeid + 1"
end if
%>
Avatar billede agony Nybegynder
17. juli 2002 - 15:21 #1
if rs.eof then
  varetypeid =  varetypeid + 1
end if
Avatar billede coolcoder Nybegynder
17. juli 2002 - 15:22 #2
hvis du vil have fat i det højest id i basen + 1 så gør nogenlunde sådan her:

<%
  set rs = server.createobject("adodb.recordset")
  rs.open "select max(varetypeid) as maxid from [tabelnavn]", conn, 1, 1
  if not rs.eof then
    varetypeid = rs("maxid") + 1
  else
    varetypeid = 1  'hvis der ikke er poster i basen
  end if

%>
%>
Avatar billede agony Nybegynder
17. juli 2002 - 15:23 #3
hvis den siger type mismatch så kan du nok lige lave en

varetypeid = cint(rs("varetypeid"))
Avatar billede sesam Nybegynder
17. juli 2002 - 15:24 #4
Det er også det jeg har gjort:
<%
varetypeid = rs("varetypeid")
if rs.eof then
  varetypeid =  varetypeid + 1
end if
%>

Men det virker heller ikke...
Avatar billede coolcoder Nybegynder
17. juli 2002 - 15:27 #5
det er da klart det andet ikke virker. Enten vil du få en fejl fordi du i linien:
>> varetypeid = rs("varetypeid")
forsøger at hente en post der ikke findes, ellers vil rs.eof være false, og du kommer aldrig ind hvor du lægger 1 til.

Prøv evt. en rs.movenext inden din if
Avatar billede sesam Nybegynder
17. juli 2002 - 15:28 #6
coolcoder: det virker ikke men jeg får ingen fejlmeddelelse
Avatar billede coolcoder Nybegynder
17. juli 2002 - 15:32 #7
nej - men prøv fx at lave en response.write "test" inde i din if. Den bliver garanteret ikke skrevet ud.

rs.eof er jo sand, når du står lige efter sidst post i recordsettet. Det kan du umuligt gøre eftersom du lige har hentet en værdi ud fra det.

Prøv:
<%
varetypeid = rs("varetypeid")
rs.movenext
if rs.eof then
  varetypeid =  varetypeid + 1
end if
%>
Avatar billede sesam Nybegynder
17. juli 2002 - 15:37 #8
Så får jeg værdien 1 det er som om den ikke tager den højeste værdi og ligger 1 til...?
Avatar billede coolcoder Nybegynder
17. juli 2002 - 15:39 #9
hvad er det du gerne vil? Have det højeste varetypeid der findes i databasen plus en??

...for så prøv lige at tjekke mit første svar :)
Avatar billede sesam Nybegynder
17. juli 2002 - 15:42 #10
Ja det er det men jeg har løst sådan her:

<%
while not rs.eof
varetypeid = rs("varetypeid")
rs.movenext
if rs.eof then
  varetypeid =  varetypeid + 1
end if
wend
%>

Hva' siger du så?
Avatar billede coolcoder Nybegynder
17. juli 2002 - 15:46 #11
jeg siger at det er dumt at lave en loop, der jo nok bliver langt, når du kan hente det ud af databasen med det samme vha en "select max(varetypeid)"
Avatar billede sesam Nybegynder
17. juli 2002 - 16:12 #12
Ok, det har du ret i, men jeg kan bare ikke få det andet til at virke...
Vil du prøve at hjælpe mig?
Avatar billede coolcoder Nybegynder
17. juli 2002 - 16:18 #13
selvfølgelig. Hvilken database bruger du? ..og hedder tabellen??
Avatar billede sesam Nybegynder
17. juli 2002 - 16:31 #14
Access2000 tblvaretype
Avatar billede coolcoder Nybegynder
17. juli 2002 - 16:36 #15
så prøv
<%
set rs = server.createobject("adodb.recordset")
rs.open "select max(varetypeid) as maxid from tblvaretype", conn, 1, 1
if not rs.eof then
  varetypeid = cint(rs("maxid")) + 1
end if
rs.close
set rs = nothing
%>
Avatar billede sesam Nybegynder
17. juli 2002 - 16:59 #16
får denne fejl:

Item cannot be found in the collection corresponding to the requested name or ordinal.
Avatar billede sesam Nybegynder
17. juli 2002 - 17:00 #17
ADODB.Recordset (0x800A0CC1)
Item cannot be found in the collection corresponding to the requested name or ordinal.
/ep/function.asp, line 460

line 460:  varetypeid = cint(rs("maxid")) + 1
Avatar billede coolcoder Nybegynder
17. juli 2002 - 17:10 #18
Du er sikkert på du har skrevet sql nøjagtig som jeg har? Dvs. husket "as maxid"

Ellers prøv:
varetypeid = cint(rs(0)) + 1
Avatar billede sesam Nybegynder
17. juli 2002 - 17:25 #19
så får jeg en værdi der = 2 og den skal være 55
Avatar billede coolcoder Nybegynder
17. juli 2002 - 17:27 #20
prøv lige at sende noget mere af din kode. Der hvor du åbner recordset osv... - bare en copy-paste.
Avatar billede sesam Nybegynder
17. juli 2002 - 17:29 #21
<%
set rs2 = server.createobject("adodb.recordset")
rs2.open "select max(varetypeid) as maxid from tblvaretype", MyConn, 1, 1
if not rs2.eof then
varetypeid = cint(rs(0)) + 1
end if
rs2.close
set rs2 = nothing
%>
Avatar billede sesam Nybegynder
17. juli 2002 - 17:32 #22
<%
id = Request.Querystring("ID")
Set MyConn=Server.CreateObject("ADODB.Connection")
MyConn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/ep.mdb")
SQL = "Select * From tblvaregruppe"
Set RS = MyConn.Execute(SQL)
while not rs.eof
varegruppeid = rs("varegruppeid")
rs.movenext
response.write""& varegruppeid & "&nbsp;"
if rs.eof then
varegruppeid =  varegruppeid + 1
end if
wend
%>
Avatar billede coolcoder Nybegynder
17. juli 2002 - 17:34 #23
i den først du skrev, skal du lige erstatte "rs(0)" med "rs2(0)", så tror jeg den er hjemme ;)
Avatar billede sesam Nybegynder
17. juli 2002 - 17:38 #24
værdien er nu 10 og det er den anden post i databasen...?
Avatar billede coolcoder Nybegynder
17. juli 2002 - 17:45 #25
<%
Set MyConn=Server.CreateObject("ADODB.Connection")
MyConn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../db/ep.mdb")
SQL = "Select MAX(varetypeid)+1 as maxID From tblvaregruppe"
Set RS = MyConn.Execute(SQL)
if not rs.eof then
  response.write rs("maxID")
end if
%>

...istedet for din egen. Det SKAL kunne virke. Jeg bruger det da så tit selv
Avatar billede sesam Nybegynder
17. juli 2002 - 17:53 #26
10 igen???
Avatar billede coolcoder Nybegynder
17. juli 2002 - 17:59 #27
og du er helt sikkert på det størst varetypeid i databasen ikke er 9 ??
Avatar billede sesam Nybegynder
17. juli 2002 - 18:00 #28
Ja den er 55
Avatar billede coolcoder Nybegynder
17. juli 2002 - 18:07 #29
hvorfor er det at jeg har skrevet "varetypeid" i mine kodestumper, og du er begyndt at skrive "varegruppeid" - hvilken er den rigtige? og sørg så lige for at bruge den.

For jeg har lige lavet en test med min kode på en db jeg selv har. Kun ændret tabel og DB-navn. Det virker fint
Avatar billede sesam Nybegynder
17. juli 2002 - 18:13 #30
kan du ikke paste kode her den som du har lavet?
Avatar billede coolcoder Nybegynder
17. juli 2002 - 18:15 #31
<%
Set MyConn=Server.CreateObject("ADODB.Connection")
MyConn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("./shop.mdb")
SQL = "Select max(id1)+1 as maxid From categories"
Set RS = MyConn.Execute(SQL)
if not rs.eof then
  response.write rs("maxid")
end if

%>

du skal selvfølgelig tilpasse stien, tabellen og inden i parentesen efter MAX skal du skrive feltnavnet du vil finde den største værdi for
Avatar billede sesam Nybegynder
17. juli 2002 - 18:18 #32
Har det noget at sige at mit id felt er af typen tekst?

Jeg får nemlig samme resultat med din kode...
Avatar billede sesam Nybegynder
17. juli 2002 - 18:19 #33
Ja det havde det så jeg rettede min database og så virkede det?
Avatar billede coolcoder Nybegynder
17. juli 2002 - 18:21 #34
det kan det meget nemt have. ASP er jo stort set ligeglad med om det er tal eller tekst. Databaser har det ikke helt sådan.

Det er vel ikke din tabelnøgle vi arbejder med, vel?
Avatar billede sesam Nybegynder
17. juli 2002 - 18:23 #35
Ja...
Avatar billede coolcoder Nybegynder
17. juli 2002 - 18:58 #36
uha - sådan en bør altså altid være et autonummeringsfelt!!!
Avatar billede sesam Nybegynder
17. juli 2002 - 20:30 #37
Det er jo netop ikke et autonummeringsfelt, derfor vil jeg finde den sidste post og ligge en til...og det virker fint nu.
Tusinde tak for hjælpen...;-)
Avatar billede coolcoder Nybegynder
17. juli 2002 - 21:05 #38
velbekomme!
..og bare for god ordens skyld, ku' du jo lige afslutte tråden og godkende et svar ;)
Avatar billede sesam Nybegynder
17. juli 2002 - 23:55 #39
Ja sorry det troede jeg, jeg havde gjort
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