/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
"Der kan ikke slettes fra de angivne tabel~
Fra : David Trasbo


Dato : 25-05-05 13:21

Jeg arbejder virkelig meget med database, og er nu stødt på endnu
et problem. Når jeg vil slette data fra min Microsoft Acces
database, får jeg fejlen: "Der kan ikke slettes fra de angivne
tabeller". Jeg ved til dels godt hvad denne fejl betyder.
Problemet er bare at jeg ikke ved hvordan man løser problemet.
Det er noget med skrivebeskyttelse eller lign. Men lige meget
hvor meget jeg redigerer i den tilhørende mappe og i Microsoft
Acces databasens Egenskaber/properties får den samme fejl. har du
har prøvet det samme og har fundet en løsning? Så tror jeg det
vil være til gavn - ikke bare for mig selv - men også for alle
andre, hvis du postede et indlæg her.

Håber at høre fra alle jer, snart.

--
David Trasbo.
Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.
Lær HTML, CSS o.a. Klik ind på <http://HTML.dk>.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (25-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-05-05 13:36

David Trasbo skrev:

> Når jeg vil slette data fra min Microsoft Acces
> database, får jeg fejlen: "Der kan ikke slettes fra de angivne
> tabeller".

Hvad er den præcise fejlmeddelelse?
Hvordan ser din slettekode ud?

Giver det kun fejl når du vil slette, eller får du også fejl hvis du
prøver at opdatere?

Har du defineret relationer med referentiel integritet?

> --
> David Trasbo.
> Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.
> Lær HTML, CSS o.a. Klik ind på <http://HTML.dk>.

Det er en meget sympatisk signatur du har, men den bliver desværre også
for lang fordi html.dk automatisk putter sin egen standardsignatur efter
alle indlæg. Så selv om du henviser til netiketten, bryder du den
faktisk i forhold til retningslinjerne vedr. længden af signaturer:
<http://www.usenet.dk/netikette/signatur.html>.

Jeg vil foreslå dig at droppe signaturen, eller alternativt at bruge en
newsklient der giver dig mulighed for selv at vælge signaturen.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (25-05-2005)
Kommentar
Fra : David Trasbo


Dato : 25-05-05 13:51


> Hvad er den præcise fejlmeddelelse?
> Hvordan ser din slettekode ud?

Selve SQL sætningen ser sådan her ud. D siger bare til hvis du vil se
resten.

strSQL = "Delete from tblMessages where Id = " &_
Request.Querystring("id") & " AND Til = '" &_
Request.Querystring("name") & "' "


> Giver det kun fejl når du vil slette, eller får du også >fejl hvis du
> prøver at opdatere?

Det har jeg ikke prøvet.

> Har du defineret relationer med referentiel integritet?

A'hva' for noget?..

> Det er en meget sympatisk signatur du har, men den bliver desværre også
> for lang fordi html.dk automatisk putter sin egen standardsignatur efter
> alle indlæg. Så selv om du henviser til netiketten, bryder du den
> faktisk i forhold til retningslinjerne vedr. længden af signaturer:
> <http://www.usenet.dk/netikette/signatur.html>.
>
> Jeg vil foreslå dig at droppe signaturen, eller alternativt at bruge en
> newsklient der giver dig mulighed for selv at vælge signaturen.

Da jeg så dette indlæg var jeg faktisk igang med at sætte en account op med
news.sunsite.dk.

Så denne meddelelse sendes ikke via HTML.dk!

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette. Lær HTML og CSS.
Klik ind på http://html.dk.



Jens Gyldenkærne Cla~ (25-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-05-05 14:09

David Trasbo skrev:

> Selve SQL sætningen ser sådan her ud. D siger bare til hvis du vil se
> resten.

Umiddelbart ser den fin nok ud - men som altid når det drejer sig om
sql-sætninger, er det en god ide at udskrive det færdige resultat. Se
hvordan det gøres her: <http://asp-faq.dk/article/?id=41>.

På den måde kan man se om du fx får overført værdierne fra querystring
korrekt.

Du behøver ikke sende mere kode her og nu, men til gengæld er den
præcise fejlmeddelelse du får fra asp-parseren vigtig.

> Da jeg så dette indlæg var jeg faktisk igang med at sætte en account op med
> news.sunsite.dk.

Nydeligt - tillykke med din nye konto.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (25-05-2005)
Kommentar
Fra : David Trasbo


Dato : 25-05-05 14:26

Ok. Jeg fandt ud af hvor fejlen lå. Den ligger på linje 36:

Conn.Execute(strSQL)

Fejlmeddelelsen er:

Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'
[Microsoft][ODBC Microsoft Access-driver] Der kan ikke slettes fra de
angivne tabeller.

/login/delete.asp, line 36

> Nydeligt - tillykke med din nye konto.


Jeg synes også at det er bedre.

--

David Trasbo.

Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Jens Gyldenkærne Cla~ (25-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-05-05 15:12

David Trasbo skrev:

> Ok. Jeg fandt ud af hvor fejlen lå. Den ligger på linje 36:
>
> Conn.Execute(strSQL)

Godt. Nu skal du så udskrive strSQL - jf. beskrivelsen på
<http://asp-faq.dk/article/?id=41>.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (25-05-2005)
Kommentar
Fra : David Trasbo


Dato : 25-05-05 15:19


> Godt. Nu skal du så udskrive strSQL - jf. beskrivelsen på
> <http://asp-faq.dk/article/?id=41>.
..html

Jeg forstår ikke helt hvad du mener. Det har jeg da gjort.

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Jens Gyldenkærne Cla~ (25-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-05-05 15:34

David Trasbo skrev:

>> Godt. Nu skal du så udskrive strSQL - jf. beskrivelsen på
>> <http://asp-faq.dk/article/?id=41>.

> Jeg forstår ikke helt hvad du mener. Det har jeg da gjort.

Nej. Du har vist hvordan din sql-sætning opbygges i din asp-kode:

strSQL = "Delete from tblMessages where Id = " &_
Request.Querystring("id") & " AND Til = '" &_
Request.Querystring("name") & "' "

Du har ikke vist hvordan den ser ud når den kører. Hvis du udskriver den
med Response.write (jf. den artikel jeg har henvist til et par gange),
får du noget i retning af:

SQL-sætning bliver: Delete from tblMessages where Id = 42 AND Til = 'x'

Det er dén udskrift der er interessant.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (25-05-2005)
Kommentar
Fra : David Trasbo


Dato : 25-05-05 16:29

> får du noget i retning af:
>
> SQL-sætning bliver: Delete from tblMessages where Id = 42 AND Til = 'x'

Ja det er rigtigt. Id angiver recordens Id i tal. Og Til angiver et navn i
bogstaver/tal.

> Det er dén udskrift der er interessant.

Nå.

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Christian M. Nielsen (25-05-2005)
Kommentar
Fra : Christian M. Nielsen


Dato : 25-05-05 17:09


"David Trasbo" <datra@mail.dk> skrev i en meddelelse
news:429499c6$0$79465$14726298@news.sunsite.dk...
>> får du noget i retning af:
>>
>> SQL-sætning bliver: Delete from tblMessages where Id = 42 AND Til = 'x'
>
> Ja det er rigtigt. Id angiver recordens Id i tal. Og Til angiver et navn i
> bogstaver/tal.
>
>> Det er dén udskrift der er interessant.
>
> Nå.
>


Du giver os ikke ret meget at arbejde med når du ikke vil vise den udskrevne
SQL sætning!

--

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk
The scary thing about looking for truth is that you might find it.



David Trasbo (25-05-2005)
Kommentar
Fra : David Trasbo


Dato : 25-05-05 17:59

> Du giver os ikke ret meget at arbejde med når du ikke vil vise den
udskrevne
> SQL sætning!

Jamen den varierer meget. Sagen er at man klikker på at link og så sletter
den det data der står over linket. Et eksempel kunne f.eks. være:

strSQL = "Delete from tblMessages where Id = "1" AND Til = "Datra"

Så enkelt er det.

--
David Trasbo.
Vær en ogd Usenet bruger. Læs http://usenet.dk/netikette.



Tomasz Otap (25-05-2005)
Kommentar
Fra : Tomasz Otap


Dato : 25-05-05 23:22

David Trasbo wrote:
> Jamen den varierer meget. Sagen er at man klikker på at link og så sletter
> den det data der står over linket. Et eksempel kunne f.eks. være:
>
> strSQL = "Delete from tblMessages where Id = "1" AND Til = "Datra"
>
> Så enkelt er det.

Nej... din strSQL kan faktisk ikke blive det angivne, eftersom du kun
angiver enkelte anførelsestegn omkring data i Til-feltet og ikke omkring
Id-feltet. Du angiver ingen dobbelte anførelsestegn nogen steder:
---------
strSQL = "Delete from tblMessages where Id = " &_
Request.Querystring("id") & " AND Til = '" &_
Request.Querystring("name") & "' "
---------

Din strSQL kan måske blive:
---------
Delete from tblMessages where Id = 1 AND Til = 'Datra'
---------


Indsæt:
---------
response.write "Min SQL sætning: <p>" & strSQL & "</p>"
---------
umiddelbart efter:
---------
strSQL = "Delete from.........
---------

Kør scriptet en gang, hvor du forsøger at slette en post og send os den
sætning, der bliver vist på skærmen.

t

Jens Gyldenkærne Cla~ (26-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 26-05-05 10:59

David Trasbo skrev:

> Jamen den varierer meget. Sagen er at man klikker på at link og så sletter
> den det data der står over linket. Et eksempel kunne f.eks. være:

Det er vi godt klar over. Men den fejl du får fra asp-parseren afhænger
af den præcise sql-sætning. Derfor er det ret væsentligt at du viser
præcis hvordan sql-sætningen ser ud når du får en fejl. Du behøver ikke
at vise sql-sætningen for enhver muligt kald af siden, men du skal vise
den for ét kald hvor der opstår fejl.

> strSQL = "Delete from tblMessages where Id = "1" AND Til = "Datra"
>
> Så enkelt er det.


Ovenstående er faktisk et ret godt bevis på hvorfor man skal udskrive
sql-sætningen i stedet for at gætte sig til hvad der står i den. Du kan
teoretisk set godt få dobbelte anførselstegn omkring 1-tallet og "Datra"
(hvis de er med i det du henter fra querystring), men dine
sql-anførselstegn (apostrofferne) kan ikke ryge ud af sætningen.

Prøv nu bare at udskrive sætningen som vi beder dig om.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (27-05-2005)
Kommentar
Fra : David Trasbo


Dato : 27-05-05 10:46


> Prøv nu bare at udskrive sætningen som vi beder >dig om.

Jamen det er meget svært for mig når jeg ikke ved hvad SQL-sætningen er. Og
hvis jeg sætter noget efter SQL, så sker der ikke noget ved det, fordi at
serveren læser scriptet igennem, når til linje 36 og indlæser ikke resten af
siden. Nogle der trin for trin vil forklare mighvad i mener. Jeg har ærlig
talt aldrig nogensinde prøvet dette før.

Intet af et jeg har skrevet har skullet virke som fornærmelser eller lign.
Jeg forstår det bare ikke.

--
David Trasbo.
Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.




Jens Gyldenkærne Cla~ (27-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-05-05 11:05

David Trasbo skrev:

> Jamen det er meget svært for mig når jeg ikke ved hvad SQL-sætningen er.

Nej, men det ved asp-parseren når du har opbygget din sql-sætning. Og
hvis du udskriver den, så ved du det også.

> Og hvis jeg sætter noget efter SQL, så sker der ikke noget ved det, fordi at
> serveren læser scriptet igennem, når til linje 36 og indlæser ikke resten af
> siden.

Derfor skal du lave udskriften *før* du kører sql-sætningen.

> Nogle der trin for trin vil forklare mighvad i mener. Jeg har ærlig
> talt aldrig nogensinde prøvet dette før.

Fair nok - jeg prøver gerne.

En normal asp-side med en sql-sætning kan se ud som følger. Jeg sætter
lidt kommentarer ind for at beskrive hvad der foregår:

<%
Dim strSQL, user, pwd

user = Request.Querystring("user")
pwd = Request.Querystring("pwd")

' Variablerne user og pwd indeholder nu et eller andet hentet fra
' querystring. Det er ikke umiddelbart til at sige hvad det er, men
' vi kan kontrollere det ved at udskrive værdien på skærmen:

Reponse.write "User: " & user & "<br>"
Reponse.write "Pwd: " & pwd & "<br>"

strSQL = "SELECT * FROM brugere WHERE user = '" & user & _
   "' AND pwd = '" & pwd & "'"

' strSQL indeholder nu en sql-sætning. Vi ved ikke præcis hvordan den
' ser ud, da den afhænger af variablerne user og pwd, men vi kan tjekke
' det ved at udskrive den:

Response.Write "strSQL = " & strSQL & "<br>"

' Her når vi så til at køre sql-sætningen. Hvis der er noget galt med
' sætningen, vil kørslen ofte stoppe når man når hertil - og i nogle
' tilfælde vil fejlmeddelelsen måske skjule det man forsøger at udskrive
' til skærmen. Det kan vi undgå ved at bede asp-parseren om helt at
' stoppe arbejdet før den udfører sql-sætningen:

Response.End

%>

Metoden herover er helt den samme der er gennemgået på
<http://asp-faq.dk/article/?id=41>. Prøv evt. også at nærlæse
eksemplerne der - og læg specielt mærke til hvilken rækkefølge linjerne
kommer i. Det afgørende trick er at man udskriver sql-koden når den er
helt færdigopbygget, men før den udføres. Altså *efter* alle linjer med
strSQL = XXX, men *før* linjen med Conn.Execute eller rs.Open.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (27-05-2005)
Kommentar
Fra : David Trasbo


Dato : 27-05-05 11:21


> Fair nok - jeg prøver gerne.
>
> En normal asp-side med en sql-sætning kan se ud som følger. Jeg sætter
> lidt kommentarer ind for at beskrive hvad der foregår:
>
> <%
> Dim strSQL, user, pwd
>
> user = Request.Querystring("user")
> pwd = Request.Querystring("pwd")
>
> ' Variablerne user og pwd indeholder nu et eller andet hentet fra
> ' querystring. Det er ikke umiddelbart til at sige hvad det er, men
> ' vi kan kontrollere det ved at udskrive værdien på skærmen:
>
> Reponse.write "User: " & user & "<br>"
> Reponse.write "Pwd: " & pwd & "<br>"
>
> strSQL = "SELECT * FROM brugere WHERE user = '" & user & _
> "' AND pwd = '" & pwd & "'"
>
> ' strSQL indeholder nu en sql-sætning. Vi ved ikke præcis hvordan den
> ' ser ud, da den afhænger af variablerne user og pwd, men vi kan tjekke
> ' det ved at udskrive den:
>
> Response.Write "strSQL = " & strSQL & "<br>"
>
> ' Her når vi så til at køre sql-sætningen. Hvis der er noget galt med
> ' sætningen, vil kørslen ofte stoppe når man når hertil - og i nogle
> ' tilfælde vil fejlmeddelelsen måske skjule det man forsøger at udskrive
> ' til skærmen. Det kan vi undgå ved at bede asp-parseren om helt at
> ' stoppe arbejdet før den udfører sql-sætningen:
>
> Response.End
>
> %>
>
> Metoden herover er helt den samme der er gennemgået på
> <http://asp-faq.dk/article/?id=41>. Prøv evt. også at nærlæse
> eksemplerne der - og læg specielt mærke til hvilken rækkefølge linjerne
> kommer i. Det afgørende trick er at man udskriver sql-koden når den er
> helt færdigopbygget, men før den udføres. Altså *efter* alle linjer med
> strSQL = XXX, men *før* linjen med Conn.Execute eller rs.Open.

Det er nok den bedste forklaring jeg har fået. Okay. Den sætning der kommer
frem på skærmen er:

strSQL = Delete from tblMessages where Id = 1 AND Til = 'Datra'

Var det sådan?..

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



Jens Gyldenkærne Cla~ (27-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-05-05 12:42

David Trasbo skrev:

> Det er nok den bedste forklaring jeg har fået.

Tak (du behøvede dog ikke citere den hele).

> strSQL = Delete from tblMessages where Id = 1 AND Til = 'Datra'
>
> Var det sådan?..

Yes! - netop. Det ser dog ikke umiddelbart forkert ud. Jeg har glemt
hvad din fejlmeddelelse var - prøv lige at læg den op igen.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (27-05-2005)
Kommentar
Fra : David Trasbo


Dato : 27-05-05 13:00

> Tak (du behøvede dog ikke citere den hele).

Ok.

> Yes! - netop. Det ser dog ikke umiddelbart forkert ud. Jeg har glemt
> hvad din fejlmeddelelse var - prøv lige at læg den op igen.

Okay, her er den:

Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'
[Microsoft][ODBC Microsoft Access-driver] Der kan ikke slettes fra de
angivne tabeller.

/login/delete.asp, line 39

--

David Trasbo.

Vær en god Usenet bruger. Læs <http://usenet.dk/netikette>.






Jens Gyldenkærne Cla~ (27-05-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-05-05 13:29

David Trasbo skrev:

> Microsoft OLE DB Provider for ODBC Drivers fejl '80004005'
> [Microsoft][ODBC Microsoft Access-driver] Der kan ikke slettes fra de
> angivne tabeller.

O.k. - lidt atypisk fejl.

Forslag 1:

Tjek om du kan læse fra tabellen. Lav sql-sætningen om til noget a la:

   SELECT * from tblMessages where Id = 1 AND Til = 'Datra'

- og kør den med noget udskrift til at kontrollere med

Forslag 2:

Tjek om du kan opdatere tabellen. Lav sql-sætningen om til noget a la:

   UPDATE tblMessages SET Til = 'XXDatra' WHERE Id = 1 AND Til = 'Datra'
   

Forslag 3:

Tjek skriverettighederne hvor databasen ligger - jf. artiklen her:
<http://asp-faq.dk/article/?id=4>. Det plejer godt nok at give en anden
fejl end den du beskriver, men prøv alligevel.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

David Trasbo (27-05-2005)
Kommentar
Fra : David Trasbo


Dato : 27-05-05 18:08


> Forslag 3:
>
> Tjek skriverettighederne hvor databasen ligger - jf. artiklen her:
> <http://asp-faq.dk/article/?id=4>. Det plejer godt nok at give en anden
> fejl end den du beskriver, men prøv alligevel.

Nu virker det!

Tak for hjælpen! Jeg troede aldrig det skulle lykkes...

--
David Trasbo.
Vær en god Usenet bruger. Læs http://usenet.dk/netikette.



David Trasbo (27-05-2005)
Kommentar
Fra : David Trasbo


Dato : 27-05-05 20:08


> Nu virker det!

Nu har jeg kun et enkelt lille problem. Hvis der ikke er noget indhold i
databasen at vise, så står der på skærmen:

fejl '80020009'
Undtagelse opstod.

/login/messages.asp, line 51

Linje 51 ser sådan her ud:

strSQL = "Select * From tblMessages Where Til = '" &_
Request.Querystring("name") & "'"

Dette er ikke til sletning af data. Men til visning. Hvordan løser jeg det?

--

David Trasbo.

Vær en god Usenet bruger. Læs http://usenet.dk/netikette.





Søg
Reklame
Statistik
Spørgsmål : 177548
Tips : 31968
Nyheder : 719565
Indlæg : 6408799
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste