webForumDet fria alternativet
Logga in / Bli medlem

argument..

Databaser & SQL

10 svar · 169 visningar · startad av icaaq

Medlem sedan okt. 20005 273 inlägg
Frågan#1

låt oss säga att jag har en tabell med dessa fält:

F_Namn*
F_Address
F_Persnr*
F_Lag
F_Styrelse

Fälten med (*) är redan ifyllda.

Nu har jag ett formulär där man ska skriva in om man är med i nån styrelse, men då vet man ju sällan personnr på den personen så det man kan fylla i där är Namn, Address, Personnr, styrelse.

Jag vill av dessa kunna utfärda en så exakt SQL-sats som möjligt, för att kunna se om jag ska uppdatera en befintlig post eller om jag ska göra en helt ny.

Det börjar låta krångligt så jag visar ungefär hur jag tänkt mig:

strNamn = Request.Form("namn")
straddress = Request.Form("address")
strPersnr = Request.Form("persnr")
strLag = Request.Form("lag")
strStyrelse = Request.Form("stryrelse")

strSQL = "SELECT * FROM TABELLEN WHERE [b]det är här det börjar, om strNamn inte är tomt skall det sökas på[/b] F_Namn = '"&strNamn&"' AND [b]och om strAddress inte är tomt skall det sökas även där[/b] F_Address = '"&strAddress&"'....osv osv...hur

skriver jag nått sånt ??

eller förstår ni vad jag menar överhuvudtaget.. ;)

Medlem sedan dec. 200012 464 inlägg
#2
strSQL = "SELECT * " &_
" FROM TABELLEN " & _
" WHERE 1 = 1 " 

if strName <> "" then
strSQL = strSQL & " and f_name = '" & strname & "'"
end if

if strAdress <> "" then
strSQL = strSQL & " and f_adress = '" & stradress & "'"
end if

'och så vidar

red: felstavning

Medlem sedan okt. 20005 273 inlägg
#3

tack..........jag hade för mig att jag sett nått sånt förut ....och precis så var det :)

Medlem sedan okt. 20005 273 inlägg
#4

kan man på nått sätt uppdatera på samma sätt fast tvärt om:

Låt oss säga att jag har

namn*
telefon
address*

Fälten med (*) är redan ifyllda.
jag vill alltså uppdatera fälten som inte har något värde (i detta fallet telefon)

kan man göra en sådan dynamisk SQL-sats??

Medlem sedan dec. 200012 464 inlägg
#5

Hur menar du egentligen?
Du borde väl endast göra en update om värdet har förändrats gentemot databasen. Det kan du åstadkomma genom att ha de gamla värdena som hidden som du jämför med.

Medlem sedan okt. 20005 273 inlägg
#6

Låt oss ta följande exempel:
jag tar och kör en select:

strSQL = "SELECT F_Namn, F_Address, F_Telefon WHERE PersonID = "&intPersonID&""
Set ObjRS = ObjConn.execute(strSQL)

Då får jag fram att jag har värden i F_Namn och F_Address ....men i det nya formuläret så har jag även fyllt i telefonnummret så jag skulle vilja uppdatera db med det.

Hur ska jag då göra det...??
:q

Medlem sedan okt. 20005 273 inlägg
#7

Det jag vill är alltså:
Om fältet är tomt i databasen och om jag har ett värde som ska in där i från ett formulär då skall det uppdateras.

går det att fixa??och hur i så fall??

Medlem sedan dec. 200012 464 inlägg
#8

Jo men asså går det.

strSQL = "SELECT F_Namn, F_Address, F_Telefon from t WHERE PersonID = "&intPersonID&""
Set ObjRS = ObjConn.execute(strSQL)

strTel = request.form("telefon") 
if  not ObjRS.eof then
    if strTel <> ObjRS("F_telefon") then
       ObjConn.execue "update t set telefon = '" & strTel & "' where PersonID = " & intPersonID ,,128
end if
end if
Medlem sedan okt. 20005 273 inlägg
#9

och så kan jag köra hela formuläret???

strSQL = "SELECT F_Namn, F_Address, F_Telefon from t WHERE PersonID = "&intPersonID&""
Set ObjRS = ObjConn.execute(strSQL)
strTel = request.form("telefon") 
if not ObjRS.eof then
if strTel <> ObjRS("F_telefon") then
ObjConn.execue "update t set telefon = '" & strTel & "' where PersonID = " & intPersonID ,,128
if strAddress <> ObjRS("F_Address") then
ObjConn.execue "update t set address = '" & strAddress & "' where PersonID = " & intPersonID ,,128
end If
end if
end if

:q

Medlem sedan dec. 200012 464 inlägg
#10

Nja, i så fall blir logiken något mer konvoluterad, det är ju onödigt att göra två update om båda fälten har ändrats.

strSQL = "SELECT F_Namn, F_Address, F_Telefon from t WHERE PersonID = "&intPersonID&""
Set ObjRS = ObjConn.execute(strSQL)
strTel = request.form("telefon") 
if not ObjRS.eof then
sql = ""
if strTel <> ObjRS("F_telefon") then
sql = "update t set telefon = '" & strTel & "'"
end if
if strAddress <> ObjRS("F_Address") then
if sql = "" then
sql = "update t set address = '" & strAddress & "'" 
else
sql = sql & ",address = '" & strAddress & "'" 
end If
if sql <> "" then
   sql = sql & " where personID = " & intPersonID 
   ObjConn.execute sql,,128
end if
end if
Medlem sedan okt. 20005 273 inlägg
#11

ok..........jag börjar bli mäkta trött i ögonen nu ...*printar* och går och läser på papper....

tack LarsG jag hör av mig imorron ;)

262 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)