EclipseMedlem sedan juli 20003 825 inlägg Kan man skapa en fråga baserad på om en tabell som kanske inte finns?
Jag har [name] och [company] från [users] som jag listar. Brevid namnet finns en liten grön eller röd bock beroende på om en annan tabell är skapad eller ej.
Kan man använda join i detta fallet? Finns det inte ett komando i stil med "if exist"? Eller förväxlar jag saker och ting med varandra...?
LarsGMedlem sedan dec. 200012 464 inlägg Om du skriver en join så måste alla tabeller finnas. Det går, eventuellt, om du har stöd för stored procedures att skriva det som ett statement
if ( exists (select 1 from information_schema.tables where table_name = 'A' )
select * from a join b on a.id = b.id
else
select * from b
Så det är nog enklast att bygga ihop olika sql-satser.
I och för sig så tycker jag att hela upplägget är suspekt.
------------------
essentitia preter non sans multiplicandum
EclipseMedlem sedan juli 20003 825 inlägg
I och för sig så tycker jag att hela upplägget är suspekt.
Då är allt i sin ordning! :-) Jag är helt ensam på detta projektet och det finns ingen i min närmsta bekanskapskrets som jag kan bolla ideer eller möjliga lösningar med.
Jag har använt detta *tillvägagångssättet* rätt länge i andra sammanhang och då har det fungerat rätt bra. Denna gången var dock uppgiften mer komplex än tidigare.
Jag ska bygga klart det "den krångliga vägen" så kan jag pejsta in koden i forumet så kan du få tycka till sen.
Det fungerade innan, förra veckan, före jag började optimera kåden...
EclipseMedlem sedan juli 20003 825 inlägg
Om du skriver en join så måste alla tabeller finnas.
Ja, tabellen i sig måste finnas. Men använder man JOIN LEFT behöver det inte vara något kriterie som är uppfyllda i den 'högra' tabellen... den man joinar alltså... Typ.
Hua! Ruggigt vilken risig svenska jag svänger mig med... men jag hoppas du hajjar.
LarsGMedlem sedan dec. 200012 464 inlägg Det jag menar är att det blir konstigt om man håller på och skapar tabeller dynamiskt i runtime.
Jag ser mer att man definierar sin datamodell med alla tabeller och sedan programmerar man mot det. Om man behöver dynamik så styr man det mer med tabellinnehåll än att man ändrar datamodellen från applikationen.
Det är klart att man skall kunna ändra en datamodell, men då måste även applikationen följa med eller så att den kan fungera som förut. Det går att använda triggers till exempel för att lösa sådant.
------------------
essentitia preter non sans multiplicandum
EclipseMedlem sedan juli 20003 825 inlägg Tack för ditt inlägg! Det är kanske några saker som vi bör ha klart för oss här. För det första fattar jag inte vad du pratar om. Det säger en del om min nuvarande kompetens på området. För det andra tror jag att triggers trivs bäst till sammans med SQL Server. Jag kör Access.
---
Här är början av koden. Det är de markerade delarna som jag tänkte man inte skulle behöva loopa åp det viset. Det är kanske lite rörigt... det blir gärna det i detta forumet! :-)
[b]SQL = "SELECT x_ID, x_firstname, x_lastname, x_company FROM [users] WHERE [x_view] = TRUE AND [x_customer] = TRUE;"
set mySQL = Conn.Execute(SQL)[/b]
on error resume next
myGetRow = mySQL.GetRows()
IF IsArray(myGetRow) THEN
FOR j = 0 to UBound(myGetRow, 2)
[b]TMP = "SELECT * FROM [fromStaffToCustomer] WHERE [x_jobID] = " & request("ID") & " AND [x_customerID] =" & myGetRow(0, j) & ";"
set myTMP = Conn.Execute(TMP)
on error resume next[/b]
IF myTMP.EOF THEN
x_view = "<A HREF=""confirm.asp?order_true=" & myGetRow(0, j) & "&ID=" & request("ID") & """>"
x_view = x_view & "<IMG SRC=""/admin/pics/icons/false.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0""></A>"
ELSE
x_view = "<A HREF=""confirm.asp?order_false=" & myGetRow(0, j) & "&ID=" & request("ID") & """>"
x_view = x_view & "<IMG SRC=""/admin/pics/icons/true.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0""></A>"
x_mail = x_mail & "<IMG SRC=""/admin/pics/icons/mail.gif"" WIDTH=""11"" HEIGHT=""16""> " & vbCRLF
END IF
EclipseMedlem sedan juli 20003 825 inlägg Det känns relevant att visa vad order_true och order_false gör.
' ## MARK CUSTOMER TO SEND MAIL TO
myVar = request("order_true")
IF myVar <> "" THEN
SQL = "INSERT INTO [fromStaffToCustomer] (x_jobID, x_customerID) VALUES (" & request("ID") & ", " & myVar & ");"
'response.write sql
Conn.Execute(SQL)
IF request("return") = "pop" THEN
returnPath = "customers.asp?ID=" & request("ID")
ELSE
returnPath = "index.asp?ID=" & request("ID")
END IF
END IF
myVar = request("order_false")
IF myVar <> "" THEN
SQL = "DELETE * FROM [fromStaffToCustomer] WHERE [x_jobID] = " & request("ID") & " AND [x_customerID] = " & myVar & ";"
Conn.Execute(SQL)
IF request("return") = "pop" THEN
returnPath = "customers.asp?ID=" & request("ID")
ELSE
returnPath = "index.asp?ID=" & request("ID")
END IF
END IF