19. marts 2004 - 11:59Der er
31 kommentarer og 1 løsning
Dynamisk ændring af Id hvis det har været aktivt !
Hej eksperter
Jeg prøver lige igen !
Jeg har 9 forhandlere, alle skal have mulighed for at modtage kunder under sig.
Det jeg gerne vil lave er at når en kunde f.eks, har oprettet sig under forhandler nr. 1, så skal den næske kunde automatsik oprettes under forhandler nr. 2 etc. Kunden kan ikke selv bestemme hvilken forhandler man bliver oprettet under !
Jeg fanger forhandler id fra en tabel = "forhandler" og indskriver forhandler i en kunde tabel = "enroll" når kunden har bestilt.
Når alle 9 forhandlere har f.eks. 1 kunde hver, skal den starte forfra, så alle har lige stor chance for at få kunder under sig !
Det kommer an på hvordan du har opbygget din database, men du skal gøre noget i stil med følgende:
Find forhandleren med færest kunder under sig, og tilknyt næste kunde til denne forhandler. Er der mere end én forhandler med f.eks. 0 kunder tilknyttet, vælger du bare den første(TOP 1).
Jeg har en forhandler tabel, hvor jeg fanger forhandler id´et, når man som kunde bestiller en vare bliver forhandler id´et indskrevet i kunde tabellen !
SELECT TOP 1 e1.ForhandlerID, Counter = (SELECT COUNT(*) FROM enroll e2 WHERE e1.ForhandlerID = e2.ForhandlerID) FROM enroll e1 ORDER BY Counter ASC
Dermed bør forhandlerID'et med færest kunder tilknyttet være resultaet. Prøv om det virker. Måske får du problemer hvis du benytter en Access database, men det virker f.eks. på en MS SQL database.
<% if request.servervariables("CONTENT_LENGTH") <> 0 then 'spørger om der bliver data tilsendt tabelnavn = "enroll" id = Request.Form("id")
Set QueryIndslag = (Connect.Execute("Select * from "& tabelnavn &""))
'laver recordsættet til db set opdatering = server.createobject("ADODB.recordset") query ="select * from "& tabelnavn &"" opdatering.open query, connect, adopenstatic, adlockoptimistic
'opretter ny linie i db og indskriver tilsendt data
Jamen problemet er at jeg nok ikke lige umiddelbart ved hvor jeg skal sætte den ind... har ikke set en lignende kode før, men jeg ville sætte den ind efter:
Set QueryForhandler = (Connect.Execute("Select Top 1 * from forhandler"))
Set QueryForhandler = (Connect.Execute("Select Top 1 * from forhandler"))
med
Set QueryForhandler = (Connect.Execute("SELECT TOP 1 e1.id, " & _ "Counter = (SELECT COUNT(*) FROM enroll e2 WHERE e1.id= e2.id) " & _ FROM enroll e1") ORDER BY Counter ASC
Nu ved jeg ikke hvad henholdsvis "forId" og "id" er, men lige nu hiver den kun "id" af de to ud af databasen. Tilføj "e1.forid," til sql-stregen(uden "'er) lige efter "e1.id".
SELECT TOP 1 e1.ForhandlerID, Counter = (SELECT COUNT(*) FROM enroll e2 WHERE e1.ForhandlerID = e2.ForhandlerID) FROM enroll e1 ORDER BY Counter ASC
... må gerne stå på én linie, jeg brød den bare op for overblikkets skyld.
Strengen skal puttes ind imellem de to appostroffer her: Set QueryForhandler = (Connect.Execute(""))
Altså som følgende(ved ikke hvordan der kommer til at se ud her):
Set QueryForhandler = (Connect.Execute("SELECT TOP 1 e1.ForhandlerID, Counter = (SELECT COUNT(*) FROM enroll e2 WHERE e1.ForhandlerID = e2.ForhandlerID) FROM enroll e1 ORDER BY Counter ASC"))
Henholdsvis e1 og e2 er variabl-navne for enroll tabellen. Jeg bruger dem, fordi jeg kalder enroll tabellen to steder og derfor sikrer en adskillelse ved at give dem forskellige navne.
Du skal ikke bruge linien; Set QueryForhandler = (Connect.Execute("Select Top 1 * from forhandler"))
Slet den og skriv istedet følgende:
Set QueryForhandler = (Connect.Execute("SELECT TOP 1 e1.ForhandlerID, Counter = (SELECT COUNT(*) FROM enroll e2 WHERE e1.ForhandlerID = e2.ForhandlerID) FROM enroll e1 ORDER BY Counter ASC"))
Fejltype: Microsoft JET Database Engine (0x80040E10) Der er ikke angivet nogen værdi for en eller flere krævede parametre. /side/includes/inc_sign_on.asp, line 404
Jeg ved godt at det er længe siden du postede dit svar, men jag har først haft tid nu...
Jeg kan simpelthen ikke få det til at virke !
Hvad gør jeg mon forkert ????
Mvh. Neller
Synes godt om
Ny brugerNybegynder
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.