icaaqMedlem sedan okt. 20004 910 inlägg
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.. ;)
------------------
Korvfarbror--Med ring på fingret
[Redigerat av icaaq den 30 sep 2001]
LarsGMedlem sedan dec. 200012 465 inlägg
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
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 30 sep 2001]
icaaqMedlem sedan okt. 20004 910 inlägg
tack..........jag hade för mig att jag sett nått sånt förut ....och precis så var det :)
------------------
Korvfarbror--Med ring på fingret
icaaqMedlem sedan okt. 20004 910 inlägg
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??
------------------
Korvfarbror--Med ring på fingret
LarsGMedlem sedan dec. 200012 465 inlägg
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.
------------------
essentitia preter non sans multiplicandum
icaaqMedlem sedan okt. 20004 910 inlägg
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
------------------
Korvfarbror--Med ring på fingret
icaaqMedlem sedan okt. 20004 910 inlägg
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??
------------------
Korvfarbror--Med ring på fingret
LarsGMedlem sedan dec. 200012 465 inlägg
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
------------------
essentitia preter non sans multiplicandum
icaaqMedlem sedan okt. 20004 910 inlägg
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
------------------
Korvfarbror--Med ring på fingret
LarsGMedlem sedan dec. 200012 465 inlägg
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
------------------
essentitia preter non sans multiplicandum
icaaqMedlem sedan okt. 20004 910 inlägg
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 ;)
------------------
Korvfarbror--Med ring på fingret