webForumDet fria alternativet

SQL .. Villkor och fånga upp eventuell uppdatering..

ASP

5 svar · 247 visningar · startad av pnisv97

Medlem sedan apr. 200248 inlägg
Frågan#1

Hej alla grymm SQL snubbar...

jag har en databas som innehåller en massa dagar som innehåller bokningar. Så som databasen är byggd idag har jag inga möjligheter att bygga om den även om man helst ville.

Jag vill alltså köra en UPDATE på en rad som redan finns och lägga ni registreringsnr på en bil på denna rad för att tala om att denna tiden är bokat.
Men om tiden redan är bokad så vill jag självklart inte köra över med mitt nya registreringsnumret utan meddela att det är uppbokat.

I dagsläget har jag löst det med 2 lookups. Först kolla om det är ledigt och om JA så fyll på med den nya bokningen.

	strSQL = "SELECT REGNR FROM BOKADEKVARTAR WHERE REGNR="""" AND KVARTINTERVALLID=" & i & " AND DAGID=" & Request.Form("dagid")
	rs.Open strSQL, Conn
	if rs.EOF then
		response.write "det är uppbokat redan"
	else
		' det finns lediga tider
		strSQL = "UPDATE BOKADEKVARTAR SET REGNR='" & Request.Form("tidregnr") & "' WHERE KVARTINTERVALLID=" & i & " AND DAGID=" & Request.Form("dagid")
                Conn.Execute (strSQL)
	end if

Som ni förstår finns det här ett problem eftersom det är möjligt att två bokar samtidigt och här finns utrymme för bekymmer, att man bokat över en redan gjord bokning. Eftersom det finns ett tidsglapp mellan de två lookups så skulle det vara möjligt att ngn hinner emellan.

Kan man lägga in "UPDATE IF REGNR=""" och sedan fånga upp om upppdateringen gjordes eller inte.. Ngn lösning måste finnas.. Men vilket sätt är bäst ?

Tack på förhand..

Medlem sedan mars 20034 471 inlägg
#2

Den här tråden kanske innehåller svaret?

Medlem sedan dec. 20003 887 inlägg
#3

Det går att lösa genom att utnyttja Connection-objektet lite bättre...

[blue]' det finns lediga tider[/blue]
strSQL = ...
Conn.Execute strSQL, lngRecordsAffected

If lngRecordsAffected = 0 Then
  [blue]' updateringen gick åt skogen - antagligen var det någon som hann före...[/blue]
End If
Medlem sedan apr. 200248 inlägg
#4

Tack Engine...

Det där låter intressant. Vet du var man kan finna mer information om recordsaffected ?.

Medlem sedan dec. 20003 887 inlägg
#5

Jodå - Execute Method (ADO Connection)

Medlem sedan mars 20007 896 inlägg
#6

Tråden flyttad till ASP/VBScript. :)

254 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)