Avatar billede dramsgaard Nybegynder
24. november 2003 - 17:26 Der er 18 kommentarer og
1 løsning

slette fra flere tabeller

jeg et script hvor brugeren kan slette billeder som er blevet uploadet til serveren. derudover har jeg en tabel (som hedder billeder) i min db som holder styr på billedernes placering, og tilføjer et unikt id til hver.

hvordan kan jeg tjekke om et billede som en bruger er ved at slette findes i ex min nyhedstabel, og hvis det gør slette det derfra også
(min nyhedstabel har et felt "billede" der indeholder billedets id)

SQL = "Delete * From billeder Where ID = "&ID&""
  MyConn.Execute(SQL)

også et eller andet til at tjekke om ID'et findes i nyhedstabellen


...ved ik om det er til at forstå, men ellers må i bare spørge
Avatar billede mm12010 Nybegynder
24. november 2003 - 17:50 #1
SQL = "SELECT * From billeder Where ID = "&ID
set rs=MyConn.Execute(SQL)
if rs.EOF then
'findes ikke
else
'findes
end if
Avatar billede dramsgaard Nybegynder
24. november 2003 - 18:29 #2
Jeg har prøvet flg, men den opdatere ikke i min tilsalg tabel

SQL = "Delete * From billeder Where ID = "&ID&""
  MyConn.Execute(SQL)

strPic = ""

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT billede FROM tilsalg where ID ="&ID
rs.Open strSQL, MyConn, 1
    if not rs.EOF then
              SQL = "Update tilsalg Set billede = '"&strPic&"' Where billede = "&ID
              MyConn.Execute(SQL)
    End If

rs.Close
Set rs = Nothing
Avatar billede eagleeye Praktikant
24. november 2003 - 19:01 #3
I den ene SQL sætninger bruges Where ID="&ID og i den anden bruges Where billede = "&ID Det skal nok være samme kolonne begge steder. Hvis det er ID så ret denne linje:

SQL = "Update tilsalg Set billede = '"&strPic&"' Where billede = "&ID

til:
SQL = "Update tilsalg Set billede = '"&strPic&"' Where ID = "&ID
Avatar billede dramsgaard Nybegynder
24. november 2003 - 19:10 #4
hmm nej den er god nok...men jeg får flg fejl:

Data type mismatch in criteria expression
Avatar billede eagleeye Praktikant
24. november 2003 - 19:12 #5
Ok så lyder det som billede er tekst så prøv:

SQL = "Update tilsalg Set billede = '"&strPic&"' Where billede = '"&ID&"'"
Avatar billede dramsgaard Nybegynder
24. november 2003 - 19:20 #6
hmm ja nu får jeg ikke nogen fejl mere, men den overskriver ikke det der svare til ID'et i kolonnen billede i tabellen Tilsalg
Avatar billede eagleeye Praktikant
24. november 2003 - 19:22 #7
hmm så kan jeg kun gentage mig selv: 24/11-2003 19:01:37
Avatar billede eagleeye Praktikant
24. november 2003 - 19:23 #8
Hvis du bruger Where billede = '"&ID&"'" så vil den overskrive hvor billede = ID'et og billede er sikket enten tom eller lig noget med /images/imga64354.jpg hvorimod ID = ID'et er den kolonne hvor billedet skal ind ;)
Avatar billede dramsgaard Nybegynder
24. november 2003 - 19:28 #9
Tabel Tilsalg:
  ID (id'et på det der er tilsalg)
  Overskrift
  tekst
  dato
  billede (id'et på billede som bruges)

Tabel billeder:
  ID (id på billedet-autonr)
  billedesti
  ...osv

sql 1 skal slette billedet fra tabellen billeder, og sql 2 skal overksrive kolonnen billede med "" hvis den er = det billede som man sletter

hvordan ville du gøre det?
Avatar billede eagleeye Praktikant
24. november 2003 - 19:34 #10
arh ok så det som du skal havde ind i tilsalg er billede ID'et på et billede.

Så skal den som SELECT de poster i tilsag hvade ændre ID=ID til billede=ID


strSQL = "SELECT billede FROM tilsalg where Billede='"&ID&"'"
rs.Open strSQL, MyConn, 1
if not rs.EOF then
  SQL = "Update tilsalg Set billede = '"&strPic&"' Where billede = '"&ID&"'"
  MyConn.Execute(SQL)
End If
rs.Close
Avatar billede dramsgaard Nybegynder
24. november 2003 - 19:42 #11
ja det ser ud til at virker : )

men jeg har 3-4 tabeller som jeg skal tjekke igennem...skal man gentage den kode hver eneste gang, eller er der en "genvej" istedet for 4x

Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT billede FROM tilsalg where Billede='"&ID&"'"
rs.Open strSQL, MyConn, 1
if not rs.EOF then
  SQL = "Update tilsalg Set billede = '"&strPic&"' Where billede = '"&ID&"'"
  MyConn.Execute(SQL)
End If
rs.Close
Set rs = Nothing
Avatar billede eagleeye Praktikant
24. november 2003 - 19:46 #12
Du er nød til at "lave" koden 3-4 gange. Man kan ikke gøre det på en gang.

Dog kan du undvære den del som tjekker om billedet findes i tilsalg tabellen men bare lave Update SQL'en da den ikke vil melde fejl hvis den ikke opdater nogle kolonne:

Så kan du lave det som dette:

SQL = "Update tilsalg Set billede = '"&strPic&"' Where billede = '"&ID&"'"
MyConn.Execute(SQL)
SQL = "Update XXXX Set billede = '"&strPic&"' Where billede = '"&ID&"'"
MyConn.Execute(SQL)
SQL = "Update YYYY Set billede = '"&strPic&"' Where billede = '"&ID&"'"
MyConn.Execute(SQL)
Avatar billede dramsgaard Nybegynder
24. november 2003 - 19:52 #13
vil der så ikke komme en EOF fejl hvis billedeID'et ikke findes i en af tabellerne, når man ikke tjekker for det
Avatar billede eagleeye Praktikant
24. november 2003 - 19:59 #14
Nej der kommer ikke en fejl hvis der ikke er nogle poster at opdaere. Den vil bare ikke opdatere nogle poster.
Avatar billede dramsgaard Nybegynder
24. november 2003 - 19:59 #15
i øvrigt nu hvor du er her eagleeye...kan du så ik fortælle mig hvad værdien af en tom post er i en tabel den er ikke ="" vel??

også kan du jo lige smide et svar : )
Avatar billede Slettet bruger
24. november 2003 - 20:01 #16
Et tomt felt er NULL :-)
Avatar billede eagleeye Praktikant
24. november 2003 - 20:02 #17
Ganske rigtigt det er ikke "" men en tom post er lig med Null.

SQL = "... Where billede is Null"

Jeg kan ikke helt huske det men måske = også vil virker med null men is null som før vist virker:
SQL = "... Where billede = Null"
Avatar billede dramsgaard Nybegynder
24. november 2003 - 20:08 #18
okay...så når jeg overskriver en post med "" så vil postens værdi være "" istedet for null, da den ikke er blevet slettet eller hvad?
Avatar billede dramsgaard Nybegynder
24. november 2003 - 20:13 #19
i øvrigt har jeg lige testet det uden tjekket, og hvis jeg ikke bruger tjekket får jeg flg fejl:
ODBC driver does not support the requested properties

men det kan være lige meget...jeg bruger det bare hver gang så
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester