nillMedlem sedan okt. 2001387 inlägg Jag undrar vad det kan vara för fel på min kod när den gör så att min access-databas får följande symptom.
Jag laddar först ner den från webhotellet till min dator för att inspektera den.
Går in i tabellen users och scrollar till fältet relationer där det på vissa poster nu står #Fel. Då får jag upp en varningsruta där det står:
"Microsft Jet-databasmotorn avbröt uppdateringen eftersom du försökte att ändra data samtidigt som en annan användare"
Jag tar Databasverktyg -> Komprimera och reparera databas.
Nu har det skapats en ny tabell som heter MSysCompactError. När jag går in på den är där en massa poster (4 kolumner) ex:
ErrorCode|ErrorDescription|ErrorRecid|ErrorTable
-1661|Det går inte att hitta fältet 'Description'||users
Går in och kollar i users på relationer och istället för #Fel står där nu bara ##########
Vad är detta för knepigt fel och hur fixar jag det?
Det har ju något med min ASP-kod att göra.
Jesper TMedlem sedan nov. 20017 144 inlägg Detta: "Microsft Jet-databasmotorn avbröt uppdateringen eftersom du försökte att ändra data samtidigt som en annan användare"
Brukar bero på att du har access öppet samtidigt som du försöker göra andra grejjor, du måste stänga ner det först.
Det andra har jag ingen aning om.
nillMedlem sedan okt. 2001387 inlägg Nej jag gör inget annat med databasen vad jag vet. Om inte IIS tjuvkikar i den eller nått.
Någon måste ju känna till felet?
nillMedlem sedan okt. 2001387 inlägg tror inte det hjälper men visst. Tror man måste utgå från felen i Access.
Men jag håller tummarna. Här kommer koden för när jag lagrar information i kolumnen relationer (där det står #Fel och ####### ibland)
VarDammit = "SELECT bjuden FROM fester WHERE festhos = " & Request.QueryString("ID")
RecSet.Open VarDammit, Connect, 3, 3
Dim Festfolk, Relationer
Festfolk = RecSet.GetRows()
RecSet.Close
For i = 0 To UBound(Festfolk, 2) ' Loopar från 0 till antal festfolk
VarDammit = "SELECT relationer FROM users WHERE ID = " & FestFolk(0, i)
RecSet.Open VarDammit, Connect, 3, 3
If Not RecSet.EOF Then
If isNull(RecSet("relationer")) Then
Relationer = ""
Else
Relationer = RecSet("relationer")
End If
RecSet.Close
If Instr(Relationer, Session("userID") & ",") = 0 And cInt(FestFolk(0, i)) <> cInt(Session("userID")) Or Relationer = "" And cInt(FestFolk(0, i)) <> cInt(Session("userID")) Then 'Om inte redan känner
VarDammit = "UPDATE users SET relationer = relationer & '" & Session("userID") & ",' WHERE ID = " & FestFolk(0, i)
Connect.Execute VarDammit,,128
VarDammit = "UPDATE users SET relationer = relationer & '" & FestFolk(0, i) & ",' WHERE ID = " & Session("userID")
Connect.Execute VarDammit,,128
End If
Else
RecSet.Close
End If
Next
nillMedlem sedan okt. 2001387 inlägg nehe gick inte den gubben :(
EkströmMedlem sedan feb. 20022 594 inlägg Gissar på att datatyperna är konstigt inställda. Känner igen dessa: ########, från när man satt fel datatyp på fält i Excel.
Tror du att det kan vara någon sån form av kikhosta?
nillMedlem sedan okt. 2001387 inlägg fälten är av typ PM...
det ska väl klara alla sorts datatyper
OveRRidEMedlem sedan feb. 200112 078 inlägg Hrm. Det har väl blivit något korrupt i din databas.
1. Exportera hela databasen (alla tabeller var för sig) till textfiler.
2. Kolla i textfilerna ifall det är nåt konstigt i dem.
3. Skapa en nya access-databas.
4. Importera den gamla datan.
5. Testa.
nillMedlem sedan okt. 2001387 inlägg testade... men efter några timmars användning får jag samma fel på den nya.
Fler idéer? (är konstigt att ingen annan haft liknande fel)
nillMedlem sedan okt. 2001387 inlägg Nehepp..
Är det någon som vet var jag kan söka hjälp med mitt problem? Någon eller något jag kan få support hos som kan sånt här?
nillMedlem sedan okt. 2001387 inlägg jag har fått lite mer information. Tydligen kan detta ha med saken att göra:
"Error Description = The Microsoft Jet Database engine stopped the process
because you and another user are attempting to change the same data at the
same time"
Det är väl ganska vanligt om man använder ASP att flera användare försöker ändra data samtidigt. Det borde väl inte generera fel....
finns det något sätt att hindra det med vbscript/sql ?
evesveMedlem sedan sep. 2001163 inlägg Har du med Connect.Close efter RecSet.Close för att stänga ner kopplingen helt?
Annars tror jag att felet ligger mer i Access än i ASP.
nillMedlem sedan okt. 2001387 inlägg klart jag har med recset.close och connect.close..
bara det att de kommer längre ner i koden.
nillMedlem sedan okt. 2001387 inlägg En ny idé: Vi antar att det handlar om att för många använder databasen samtidigt. Att det är det felet beror på.
Hjälper det då om jag delar upp tabellerna i olika databaser?
OveRRidEMedlem sedan feb. 200112 078 inlägg
Hjälper det då om jag delar upp tabellerna i olika databaser?
Detta är det sista du skall göra, håll dig till en databas.
Du säger att felet uppstår igen efter ett par timmars användning.. vilken kod är det som körs under denna tid?
nillMedlem sedan okt. 2001387 inlägg T.ex den koden jag postat några inlägg tidigare..
Det är den som skriver till krångelfältet (relalationer) i huvudsak. Skulle vara evigt tacksam om någon kom på någon simpel lösning till mitt problem.
Men när man inte fått någon bra lösning på flera veckor börjar man tänka på mindre bra lösning och om felet då beror på att många skriver och ändrar till databasen samtidigt borde väl flera databaser hjälpa? Det verkar logiskt :)
OveRRidEMedlem sedan feb. 200112 078 inlägg Att skapa flera databaser till samma data är inte ett alternativ som inte får yttras högt i detta forum. ;)
1. Du kan inte göra JOIN:s mellan tabeller.
2. Du måste öppna flera connection-objekt. Prestandaförlust.
3. Du kommer få ett jädrans strul om du skall jämföra, iterera eller ändra data som ligger i separerade databaser.
4. Det är programmeringsmässigt sett fel.
Finns det någon .ldb-fil i samma mapp som databasen? Vilka användare har rätt att läsa/ändra databasen? Vilken drivrutin använder du när du öppnar en koppling mot databasen, hur ser din connection-sträng ut?
OveRRidEMedlem sedan feb. 200112 078 inlägg Hrm. Funderade lite på hur det skulle påverka om du öppnar databasen exklusivt, alltså en användare åt gången. Du får nog ett par rejäla väntetider för användare som placeras i kö, men det kan fungera..
[red]Connect.Mode = adModeShareExclusive[/red]
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("/data/myDb.mdb")
nillMedlem sedan okt. 2001387 inlägg en ldb-fil ser jag ibland men den försvinner lika fort när jag sen uppdaterar vyn.
Rätt att läsa/ändra databasen, huh? databasen ligger på loopia webhotell är det enda jag vet.
min Connect-sträng:
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\datan.mdb") & ";Jet OLEDB:Database Password=xx;"
Vad blir följden av att öppna den exklusivt? får de andra ett felmeddelande då eller?
och hur går jag tillbaka till vanlig öppningen sen?