Något slikt detta kanske
update annantabell
set katid = (select katid
from forstatabell
where artikelnummer = annantabell.artikelnummer)
29 svar · 444 visningar · startad av OveRRidE
Jag har försökt att fixa detta men inte lyckats ordentligt...
Jag skall ur en tabell hämta artikelnummer och katid, och sedan i en annan tabell lägga in detta kategori-id på den rad som har det artikelnummer som jag hämtade ut första.
Sen skall detta loopas igenom så att detta görs till dess att det inte finns några rader som inte gåtts igenom i första tabellen.
nån som förstår?
Något slikt detta kanske
update annantabell
set katid = (select katid
from forstatabell
where artikelnummer = annantabell.artikelnummer)
fråga 2: kommer den gå igenom alla poster som matchar kriteriet nu då?
Alla poster i annantabell blir uppdaterade. Om den innehåller ett artikelnummer som inte finns i forsttabell så blir katid null i den posten.
Svar på fråga 1:
Beror på dbms.
vad menar du med
Beror på dbms.
Hur man öppnat db:n eller?
jag kör med vanlig
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/priser.mdb"))
'o sen en fin SQL-fråga
det borde väl funka
vad han menar är om man kör access, mySQL , MS SQL eller någon annan databasmotor
Jag menar att det är SQL-standard att skriva så men att alla DBMS (t.ex. Mysql) inte har stöd för det.
EKO Eko eko
ok
jaja så här ser min kod ut nu iaf.. men jag får inget på raderna efter att den körts...
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data/priser.mdb"))
Set SQLstr = Connect.Execute("UPDATE priswebsverige SET katid = (SELECT katid FROM kat_join WHERE artnr = priswebsverige.art")
Connect.Close
Det ser ju ok ut.
Vad får du ut om du kör denna select direkt i Access
SELECT katid
FROM kat_join,priswebsverige
WHERE kat_join.artnr = priswebsverige.art
Felmeddelande:
Microsoft JET Database Engine error '80004005'
Operation must use an updateable query.
/add_kol.asp, line 26
Sök på updateable query.
(Det är något med rättigheter på databasfilerna som inte är korrekt inställt.)
Efter körning direkt i Access:
The specefied field 'katid' could refer to more than one table listed in the FROM clause of your SQL statement.
sök efter updatable query var nånstans? msdn kanske..
Hittat på msdn efter sökning:
You attempted to run a query that tried to update a field that cannot be updated. For example, you may have created the query in such a way that you tried to update a field on the one side of a one-to-many relationship.
humma?
Jag tänkte på sökfunktionen här på Webforum.
Jag vet att det finns tidigare trådar där problem med updateable query har diskuteras.
SELECT kat_join.katid
FROM kat_join,priswebsverige
WHERE kat_join.artnr = priswebsverige.art
Jag tänkte bara att det är bäst att testa ut att joinen fungerar och att det finns matchande poster, men det kan ju anstå tills dess att du har löst problemet med updateable query.
MSDN sökning gav:
GREJ 1
Another very common cause is when the join includes linked ODBC tables that do not have unique indexes. In this case, there is no way for SQL to guarantee that records are unique in a table that has fields whose value will change with the query.
Detta enligt vad jag förstår innebär att en av tabellerna inte har någon primärnyckel (vilket jag faktiskt kommer ihåg att en av dem inte har) och då kan inte SQL garantera unika id i tabellen, vilket resulterar i fel.. eller?
GREJ 2
A second cause of this error is that the database was not opened with the correct MODE for writing. If you perform the Open on the Connection object, you use the Mode property to indicate the permissions on the connection as shown here.. bla habla bla exempel kod..
Och detta då? Jag har för mig (tänker så långt näsan räcker) att det inte går att uppdatera med Execute-metoden.. eller har jag fel?
jag skall testa lite till, tacksam för svar.
Att använda execute för att göra update skall inte vara något problem.
Jag hittade detta inlägg från @nders som svar på frågan om updateable query
rättigheter. IUSR_datornamn måste ha tillräckliga rättigheter i mappen databasen ligger, rxwd.
ok.. många inlägg i rad här nu.. hoppas nån har förståelse med mig..
det är den andra delen av sql frågan som är fel för
Set SQLstr = Connect.Execute("UPDATE priswebsverige SET katid = 1")
fungerade nämligen utmärkt..
såhär ser hela sql-frågan ut, för er som inte sett den:
Set SQLstr = Connect.Execute("UPDATE priswebsverige SET katid = (SELECT katid FROM kat_join WHERE artnr = priswebsverige.art)")
hjälp?
[kod]