Jag ansluter till en Access-databas via ADO. Jag har två tabeller, APARTMENT och HOUSE, där HOUSE har flest antal fält. Antalet fält borde inte ha någon betydelse vid delete... Låter ju nästan som en bugg i ADO. Om det är antalet fält som är problemet kan du ju läsa in lite färre, det har ju ingen betydelse vid delete. Så här ser den kod ut där det blir fel: Sant, men nu upptäckte jag samma problem när jag anropar rs.Update. Access i sig har en begränsning på 255 fält i en tabell. Vet inte om det finns någon begränsning som är lägre när det gäller ADO. Kör du med ODBC eller OLEDB-drivrutin? Kör du med ODBC bör du byta, det brukar uppstå underliga fel med den. Tack för din hjälp! Det är enbart kopplingssträngen som skiljer, såhär ska den se ut istället: Tyvärr är frågan fortfarande för komplex....suck Testa att använda en dynamic cursor istället för statisk. Har inte provat det men jag ändrade CursorLocation till adUseServer, istället för adUseClient. Då fungerade det!ADO: fel -2147467259 Frågan är för komplex
När jag raderar en post mha rs.Delete fungerar det på tabellen APARTMENT men inte PÅ HOUSE. Då uppstår följande fel:
[Microsoft][Drivrutin för ODBC Microsoft Access] Frågan är för komplex.
ID: -2147467259
Vad är felet? Exakt samma sak fungerar på båda tabeller med en MySQL-databas.Sv: ADO: fel -2147467259 Frågan är för komplex
/JohanSv:ADO: fel -2147467259 Frågan är för komplex
Idén med den är att flytta över alla poster i databasen med anslutning tmpConn till Conn.
Efter varje kopierad post, tar jag bort den. Egentligen kam man nog lösa det på annat vis, men det bör ju funka, eller?!
'Flyttar över hus
tmpRS.Open "SELECT * FROM House WHERE ID >=10;", tmpConn, adOpenStatic, adLockOptimistic
rs.Open "SELECT * FROM House WHERE 1=0;", conn, adOpenStatic, adLockOptimistic
Do While tmpRS.RecordCount > 0
rs.AddNew
tmpRS.MoveFirst
For I = 0 To tmpRS.Fields.Count - 1
rs.Fields(I) = tmpRS.Fields(I)
Next I
'Ser till att varje post får ett nytt, unikt ID-nummer
tmpNewID = tmpNewID + 1
rs("ID") = tmpNewID
rs.Update
tmpMovedRows = tmpMovedRows + 1
tmpRS.Delete 'Här uppstår felmeddelandet
'Visar användaren progressionen
frmWaitScreen.lblText.Caption = "Flyttar kunder...(" & tmpMovedRows & "/" & tmpRowCount & ")"
DoEvents
Loop
Sv:ADO: fel -2147467259 Frågan är för komplex
Det verkar ju heltokigt, det kan väl inte finnas en begränsning på antal fält som är möjliga att påverka? I detta fall handlar det om ca 200 - 250 st fält.
När jag anropar MySQL databasen, funkar det fint fint i alla fall...
Ingen som har en förklaring? Är Access som en usel databas...just nu känns det så. Detta måste funka!Sv: ADO: fel -2147467259 Frågan är för komplex
Om du har så många fält i din tabell bör du även fundera på din databas-design, det borde finnas bättre sätt att lösa din lagring på. Kan du beskriva vad det är för typ av information som sparas i alla fälten?
/JohanSv:ADO: fel -2147467259 Frågan är för komplex
Jag använder ODBC, har inte använt OLEDB och vet inte något om det. Funkar det som samma sätt?
Databasen innehåller information om värderingar av småhus och lägenheter. Jag har bara två tabeller, en HOUSE och en APARTMENT. Gissar att det är en dålig databasdesign, har inte hållt på med det tidigare, men kruxet är att en värdering av hus består av en massa information. Jag har redan begränsat antal fält genom att använda mig av arrays i MEMO-fält, istället för flera fält.
Kanske bör man dela upp HOUSE i fler tabeller? Är det en bra lösning?
Kan föresten nämna att det funkar att hämta alla fält och anropa rs.AddNew, men inte med rs.Update. Skumt...med DAO funkar det utan problem, med ADO och MySQL inga problem MEN med ADO och Access bara problem...Sv: ADO: fel -2147467259 Frågan är för komplex
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("../db/db.mdb")
Om du har MEMO-fält kan det kanske ställa till det lite också, har varit med om att det har spökat...
/JohanSv:ADO: fel -2147467259 Frågan är för komplex
Tack ändå!Sv: ADO: fel -2147467259 Frågan är för komplex
Sv:ADO: fel -2147467259 Frågan är för komplex
Tack ändå! Uppskattar alla hjälpsamma!