webForumDet fria alternativet

Sp

2 svar · 195 visningar · startad av icaaq

icaaqMedlem sedan okt. 20004 910 inlägg
#1

OBS. MYCKET KOD
Tjenare igen, Och god fortsättning på er alla wF:are.

Jag skulle vilja ha lite hjälp med SP, jag har denna kod nu:

Sub s_Key4
	Dim arrTeams(3)
	Dim equal
	Dim i
	Dim j
	Dim strLag1
	Dim strLag2
	Dim strLag3
	Dim strLag4
	Dim strGetId
	Dim IntLastId
	Dim strSQL1
	Dim strSQL2
	Dim strSerieNamn
	Dim strSasong
	Dim strKlass
	Dim intlag
	Dim blnDubbel
	Dim blnOmvand
	'---------------------------------------------------------------------
		'Lägger in lagen i Arrayen arrTeams
		arrTeams(0) = Cint(Request.Form("lag1"))
		arrTeams(1) = Cint(Request.Form("lag2"))
		arrTeams(2) = Cint(Request.Form("lag3"))
		arrTeams(3) = Cint(Request.Form("lag4"))
		'-----------------------------------------------------------------
			'Kollar om någon post är den andra lik!!
			equal = false
			for i = 0 to ubound(arrTeams)
			for j = i + 1 to ubound(arrTeams)
			if arrTeams(i) = arrTeams(j) then
			equal = true
			exit for
			end if
			next
			if equal then exit for
			next
			'-------------------------------------------------------------
				'Skickar tillbaks användaren med ett felmess om equal = true
				If equal = True Then Response.redirect "addmatch.asp?action=visalag&error=1&serienamn="&Request.Form("serienamn")&"&klass="&Request.Form("klass")&"&intlag="&Request.Form("intlag")&"&dubbel="&Request.Form("dubbel")&"&omvand="&Request.Form("omvand")&""
					'------------------------------------------------------------------------------
					'Om allt stämmer lägger jag in värdena i variabler.....
					intLag1 = arrTeams(0)
					intLag2 = arrTeams(1)
					intLag3 = arrTeams(2)
					intLag4 = arrTeams(3)
					strSerieNamn = FixaTecken(Request.Form("serienamn"))
					strKlass = FixaTecken(Request.Form("klass"))
					strSasong = FixaTecken(Request.Form("sasong"))
					intMMID = Session("MMID")
					
					If Len(Request.Form("dubbel")) > 0 Then blnDubbel = True
					If Len(Request.Form("omvand")) > 0 then blnOmvand = True
					'------------------------------------------------------------------------------
					'Hämtar nästa ID ur tabellen t_getID
					strGetId = "INSERT INTO t_getID(f_tabell)VALUES('"&strSerieNamn&"')"
					Set Objconn = Server.CreateObject("ADODB.Connection") 
						Objconn.ConnectionString = "driver=MySQL;UID=root;PWD=;Database=XXX;option=16384"
						Objconn.open
						'Response.Write strGetId
						ObjConn.Execute(strGetId)
						Set ObjRS = ObjConn.Execute("Select last_insert_id()")
						intLastId = ObjRS(0)
						ObjRS.Close
						Set ObjRS = Nothing
						ObjConn.Close
						Set ObjConn = Nothing					
						'------------------------------------------------------------------------------
						'Börjar lägga in i db
							'Omg 1					
							strSQL1 = "INSERT INTO t_match"&_
							"(f_tabell, f_omg, "&_
							"f_serie_namn, "&_
							"f_klass, "&_
							"f_sasong, "&_
							"f_hemmalag, "&_
							"f_bortalag, "&_
							"f_user_id)"&_
							"VALUES"&_
							"("&intLastId&", 1, '"&strSerieNamn&"', '"&strKlass&"', "&_
							"'"&strSasong&"', "&_
							""&intlag1&", "&_
							""&intlag4&", "&_
							""&intMMID&"),"&_
							"("&intLastId&", 1, '"&strSerieNamn&"', '"&strKlass&"', "&_
							"'"&strSasong&"', "&_
							""&intlag2&", "&_
							""&intlag3&", "&_
							""&intMMID&"),"
								'------------------------------------------------------------------
								'Omg 2
								strSQL1 = strSQL1 + "("&intLastId&", 2, '"&strSerieNamn&"', '"&strKlass&"', "&_
								"'"&strSasong&"', "&_
								""&intlag3&", "&_
								""&intlag1&", "&_
								""&intMMID&"),"&_
								"("&intLastId&", 2, '"&strSerieNamn&"', '"&strKlass&"', "&_
								"'"&strSasong&"', "&_
								""&intlag4&", "&_
								""&intlag2&", "&_
								""&intMMID&"),"
									'--------------------------------------------------------------
									'Omg 3
									strSQL1 = strSQL1 + "("&intLastId&", 3, '"&strSerieNamn&"', '"&strKlass&"', "&_
									"'"&strSasong&"', "&_
									""&intlag1&", "&_
									""&intlag2&", "&_
									""&intMMID&"),"&_
									"("&intLastId&", 3, '"&strSerieNamn&"', '"&strKlass&"', "&_
									"'"&strSasong&"', "&_
									""&intlag4&", "&_
									""&intlag3&", "&_
									""&intMMID&")"
									If blnDubbel Then
										If blnOmvand Then
											'------------------------------------------------------
											'Omg 4					
											strSQL2 = "INSERT INTO t_match"&_
											"(f_tabell, f_omg, "&_
											"f_serie_namn, "&_
											"f_klass, "&_
											"f_sasong, "&_
											"f_hemmalag, "&_
											"f_bortalag, "&_
											"f_user_id)"&_
											"VALUES"&_
											"("&intLastId&", 4, '"&strSerieNamn&"', '"&strKlass&"', "&_
											"'"&strSasong&"', "&_
											""&intlag2&", "&_
											""&intlag1&", "&_
											""&intMMID&"),"&_
											"("&intLastId&", 4, '"&strSerieNamn&"', '"&strKlass&"', "&_
											"'"&strSasong&"', "&_
											""&intlag3&", "&_
											""&intlag4&", "&_
											""&intMMID&"),"
												'--------------------------------------------------
												'Omg 5
												strSQL2 = strSQL2 + "("&intLastId&", 5, '"&strSerieNamn&"', '"&strKlass&"', "&_
												"'"&strSasong&"', "&_
												""&intlag1&", "&_
												""&intlag3&", "&_
												""&intMMID&"),"&_
												"("&intLastId&", 5, '"&strSerieNamn&"', '"&strKlass&"', "&_
												"'"&strSasong&"', "&_
												""&intlag2&", "&_
												""&intlag4&", "&_
												""&intMMID&"),"
													'----------------------------------------------
													'Omg 6
													strSQL2 = strSQL2 + "("&intLastId&", 6, '"&strSerieNamn&"', '"&strKlass&"', "&_
													"'"&strSasong&"', "&_
													""&intlag4&", "&_
													""&intlag1&", "&_
													""&intMMID&"),"&_
													"("&intLastId&", 6, '"&strSerieNamn&"', '"&strKlass&"', "&_
													"'"&strSasong&"', "&_
													""&intlag3&", "&_
													""&intlag2&", "&_
													""&intMMID&")" 

										Else
											'------------------------------------------------------
											'Omg 4					
											strSQL2 = "INSERT INTO t_match"&_
											"(f_tabell, f_omg, "&_
											"f_serie_namn, "&_
											"f_klass, "&_
											"f_sasong, "&_
											"f_hemmalag, "&_
											"f_bortalag, "&_
											"f_user_id)"&_
											"VALUES"&_
											"("&intLastId&", 4, '"&strSerieNamn&"', '"&strKlass&"', "&_
											"'"&strSasong&"', "&_
											""&intlag4&", "&_
											""&intlag1&", "&_
											""&intMMID&"),"&_											
											"("&intLastId&", 4, '"&strSerieNamn&"', '"&strKlass&"', "&_
											"'"&strSasong&"', "&_
											""&intlag3&", "&_
											""&intlag2&", "&_
											""&intMMID&"),"
												'--------------------------------------------------
												'Omg 5
												strSQL2 = strSQL2 + "("&intLastId&", 5, '"&strSerieNamn&"', '"&strKlass&"', "&_
												"'"&strSasong&"', "&_
												""&intlag1&", "&_
												""&intlag3&", "&_
												""&intMMID&"),"&_
												"("&intLastId&", 5, '"&strSerieNamn&"', '"&strKlass&"', "&_
												"'"&strSasong&"', "&_
												""&intlag2&", "&_
												""&intlag4&", "&_
												""&intMMID&"),"
													'----------------------------------------------
													'Omg 6
													strSQL2 = strSQL2 + "("&intLastId&", 6, '"&strSerieNamn&"', '"&strKlass&"', "&_
													"'"&strSasong&"', "&_
													""&intlag2&", "&_
													""&intlag1&", "&_
													""&intMMID&"),"&_
													"("&intLastId&", 6, '"&strSerieNamn&"', '"&strKlass&"', "&_
													"'"&strSasong&"', "&_
													""&intlag3&", "&_
													""&intlag4&", "&_
													""&intMMID&")"

											End If
										End IF 											
										'--------------------------------------------------------------------------
											'Tar bort alla som har en vakant plats
											d_strSQL = "DELETE FROM t_match WHERE f_hemmalag = 0 OR f_bortalag = 0"
												'----------------------------------------------------------------------
												'Öppnar en connection till mySQL
												Set Objconn = Server.CreateObject("ADODB.Connection") 
													Objconn.ConnectionString = "driver=MySQL;UID=root;PWD=;Database=XXX;option=16384"
													Objconn.open
													Response.Write strSQL
													ObjConn.Execute(strSQL1),,128
													If blnDubbel Then
														ObjConn.Execute(strSQL2),,128
													End If
													'----------------------------------------------
													'Tar bort alla vakanta matcher
													ObjConn.Execute d_strSQL, intDeletad,128
													'----------------------------------------------
													'Skriver ut SQL satserna															
													Response.Write strSQL1 &"<br>"& vbCrLf				
													Response.Write strSQL2 &"<br>"& vbCrLf
													Response.Write d_strSQL &"<br>"& vbCrLf
													Response.Write intDeletad &"<br>"& vbCrLf
														'--------------------------------------------------------------
														'Stänger och förstör connectionen till mySQL
														ObjConn.Close
														Set ObjConn = Nothing
				

End Sub

Men det skulle väl vara smidigare att ha allt i SP. Då kommer problemet, jag har aldrig använt mig av dessa så om nån kunde vissa lite så att jag kommer in på rätt spår skulle jag vara mycket tacksam :)

mvh Icaaq

Red./Stavfel osv osv

------------------
kolung.....det tål att tänkas på!

[Redigerat av icaaq den 26 dec 2001]

icaaqMedlem sedan okt. 20004 910 inlägg
#2

Jag har alltså tillgång till en SQL-server 2000 nu så det är till den detta ska funka :)

------------------
kolung.....det tål att tänkas på!

LarsGMedlem sedan dec. 200012 465 inlägg
#3

Det är bäst om du lägger validering av input utanför proceduren

create procedure icaaqOne (@strSerieNamn varchar(30),@strKlass varchar(30), @strSasong varchar(30), @intMMid int, intLag1 int, intLag2 int, intLag3 int, intLag4 int ) as

begin
declare @intLastId int
set nocount on
INSERT INTO t_getID(f_tabell)VALUES(@strSerieNamn)
set @intLastId = @@identity

INSERT INTO t_match (f_tabell, f_omg, 
f_serie_namn, 
f_klass, f_sasong,
f_hemmalag, f_bortalag, f_user_id)
VALUES (@intLastId, 1, @strSerieNamn, @strKlass, @strSasong, 
@intlag1, @intlag4,
@intMMID,@intLastId, 1, @strSerieNamn, @strKlass, @strSasong, 
@intlag2, @intlag3, 
@intMMID)
-- osv med övriga insert
DELETE FROM t_match WHERE 0 in (f_hemmalag,f_bortalag)
end

sen är det bara att anropa med

sql = "exec icaaqOne '" & strSerieNamn & "','" & strKlass & "','" & strSasong & "', " & intMMid & "," & intLag1 & "," & intLag2 & "," intLag3 & "," & intLag4 
connect.execute sql,,128

------------------
essentitia preter non sans multiplicandum

Genererad på 381 ms · cache AV · v20260730165559-full.f96bc7eb