webForumDet fria alternativet

Mattekod funkar inte som den ska

ASP

7 svar · 314 visningar · startad av His Divine Shadow

Medlem sedan sep. 20004 079 inlägg
Frågan#1

Den här koden är en del av ett system som är till för att företagskunder ska kunna kan skapa egna kunder, denna kod tar företagskundens kund nr. t.ex. 585 och väljer ut det största numret som börjar med 585*, om inget finns blir det 5851, finns det blir det 5851+1 alltså 5852 osv., detta funkar tills man kommer till 5859, då blir det 5860, det borde istället bli 58510 (och sen 58511 osv.).

Men hur gör jag?

SQL= "SELECT MAX(cint(Kundnr)) FROM Kund Where KundNr LIKE '"& session("user") &"[0-9]%'"
set rs = Conn.Execute(sql)

If RS.EOF OR IsNull(RS(0)) Then
kun2 = kundnr2 & "1"
Else
kun2 = Cint(rs(0)) + 1
kun2 = kun2
End if
Medlem sedan juli 2003465 inlägg
#2

Du får lägga ihop dem som strängar istället för som integer

Medlem sedan sep. 20004 079 inlägg
#3

Jag försökte det med denna kod, då får jag inte rätt heller:

SQL= "SELECT MAX(Kundnr) FROM Kund Where KundNr LIKE '"& session("user") &"[0-10]%'"
set rs = Conn.Execute(sql)

If RS.EOF OR IsNull(RS(0)) Then
kun2 = kundnr2 & "1"
Else
kun2 = rs(0) + 1
kun2 = kun2
End if 
rs.Close

Har ett test konto där kundnummret är 584 och har tre kunder, 5841, 5842 och 5843, med denna kod så blir det nya numret 5842 när det borde bli 5844

Medlem sedan juni 200032 967 inlägg
#4
  1. Du kan inte kolla EOF och använda ett fältvärde i samma IF-sats.
  2. vad hade du tänkt att kun2 = kun2 skulle göra för nytta?

Kanske något sånt här kan funka, men jag är inte riktigt säker. Det blev några parenteser. ;)

SQL= "SELECT MAX(cint(Kundnr)) FROM Kund Where KundNr LIKE '"& session("user") &"[0-9]%'"
set rs = Conn.Execute(sql)

If RS.EOF Then
	kun2 = kundnr2 & "1"
Else
	If IsNull(RS(0)) then 
		kun2 = kundnr2 & "1"
	else
		kun2 = Session("user") & Cstr(Clng(right(rs(0), len(rs(0))-len(session("user"))))+1)
	end if
End if
Medlem sedan juli 2003465 inlägg
#5

hur vet du om det är en kund till företagskunden eller om det är en företagskund? om du skall skall dela upp det i strängar så måste du ju veta vad som är vad för att det skall bli riktigt...

om det är första tre siffrorna som företagskund så blir det typ

SQL = "SELECT kundnr FROM kund WHERE KundNr LIKE '"& session("user") &"%' ORDER BY kundnr DESC"
set rs = Conn.Execute(sql)

If not RS.EOF Then
if len(rs("kundnr")) > 3 then
 kun2 = left(rs("kundnr"), 3) & cint(right(rs("kundnr"), len(rs("kundnr"))-3)) +1
end if

typ så vell...
hadde lite brått

Medlem sedan sep. 20004 079 inlägg
#6

@nders skrev:

  1. Du kan inte kolla EOF och använda ett fältvärde i samma IF-sats.
  2. vad hade du tänkt att kun2 = kun2 skulle göra för nytta?

Ingen aning, den här koden är omgjord från en annan kod som gjordes av han som arbetade här före mig, ides bara inte röra det :p

Hursomhelst, koden verkar funka fastän nu när jag gjort en kund som är 58410 så får jag overflow när jag tänkte göra 58411?

Medlem sedan juni 200032 967 inlägg
#7

Integer har en gräns på 32k, använd long istället.

Medlem sedan sep. 20004 079 inlägg
#8

Yes, tackar! :bire

267 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)