Avatar billede nellersteph Nybegynder
19. marts 2004 - 11:59 Der 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 !

Hvordan klarer jeg den ?????

HJÆÆÆLP

Neller
Avatar billede drengen Nybegynder
20. marts 2004 - 11:03 #1
Hej Neller

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).

Kim A
Avatar billede nellersteph Nybegynder
21. marts 2004 - 21:31 #2
Hej Kim A

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 !

Kan det gøres på en nem og smart måde ?

Mange frustrerede hilsner Neller
Avatar billede nellersteph Nybegynder
23. marts 2004 - 13:57 #3
Har stadig ikke fårt klaret problemet.... Er der nogen der kan hjælpe ?
Avatar billede drengen Nybegynder
23. marts 2004 - 14:14 #4
Der er lidt indviklet at forklare her, men lad os prøve. Hvilket sprog bruger du, ASP?
Avatar billede nellersteph Nybegynder
23. marts 2004 - 14:18 #5
Hej Drengen, ja det gør jeg... skal du se det jeg har kodet indtil videre ?
Avatar billede drengen Nybegynder
23. marts 2004 - 15:07 #6
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.


Kim A
Avatar billede nellersteph Nybegynder
23. marts 2004 - 15:12 #7
Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03FD)
'Case' var ventet
Avatar billede nellersteph Nybegynder
23. marts 2004 - 15:12 #8
Ja jeg arbejder i access
Avatar billede drengen Nybegynder
23. marts 2004 - 15:16 #9
Må jeg se din kode?
Avatar billede nellersteph Nybegynder
23. marts 2004 - 15:52 #10
<%
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

opdatering.addnew
opdatering("dato") = time
opdatering("navn") = trim(request.form("navn"))
opdatering("nick") = trim(request.form("nick"))
opdatering("email") = trim(request.form("email"))
opdatering("land") = trim(request.form("land"))
opdatering("order") = trim(request.form("order"))
opdatering("forhandler") = trim(request.form("forhandler"))
opdatering("antalKd") = trim(request.form("antalKd"))
opdatering.update
opdatering.close
%>

<%

else 'hvis der ikke bliver tilsendt data

id = Request.QueryString("id")

%>
    <table width="300" cellpadding="2" cellspacing="0" border="0" align="center">
<form action="default.asp?id1=4" method="post">
<%
Set QueryNavn = (Connect.Execute("Select "& varsql &" from formular"))
%>
        <tr>
            <td width="100">Standard <input name="order" type="radio" value="standard"></td>
            <td width="100">Advantage <input name="order" type="radio" value="advantage"></td>
            <td width="100">Prestige <input name="order" type="radio" value="prestige"></td>
        </tr>
        <tr>
            <td><%=QueryNavn("navn"& sprog2 &"")%> :</td>
            <td align="right" colspan="2"><input name="navn" type="text" size="40" class="mem"></td>
        </tr>
        <tr>
            <td><%=QueryNavn("nick"& sprog2 &"")%> :</td>
            <td align="right" colspan="2"><input name="nick" type="text" size="40" class="mem"></td>
        </tr>
        <tr>
            <td><%=QueryNavn("email"& sprog2 &"")%> :</td>
            <td align="right" colspan="2"><input name="email" type="text" size="40" class="mem"></td>
        </tr>
        <tr>
            <td><%=QueryNavn("land"& sprog2 &"")%> :</td>
            <td align="right" colspan="2"><input name="land" type="text" size="40" class="mem"></td>
        </tr>

<%
Set QueryEnr = (Connect.Execute("Select * from enroll"))

Set QueryForhandler = (Connect.Execute("Select Top 1 * from forhandler"))
%>
        <tr>
            <td>Id <%=QueryForhandler("forId")%></td>
            <td align="right" colspan="2"><input name="forhandler" type="hidden" value="<%=QueryForhandler("id")%>"></td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td align="right" colspan="2"><input type="reset" value="Reset" class="knap">&nbsp;<input type="submit" value="Send" class="knap"></td>
        </tr>
</form>
    </table>
<% end if%>
Avatar billede drengen Nybegynder
23. marts 2004 - 16:10 #11
Jeg vil gerne se koden når du indsætter sql-strengen jeg indsatte før, du behøver ikke vise alt det andet igen.
Avatar billede nellersteph Nybegynder
23. marts 2004 - 17:00 #12
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"))
Avatar billede drengen Nybegynder
23. marts 2004 - 17:22 #13
Du erstatter

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
Avatar billede drengen Nybegynder
23. marts 2004 - 17:24 #14
Der mangler lidt. Det skal erstattes 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"))
Avatar billede drengen Nybegynder
23. marts 2004 - 17:30 #15
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".


Kim A
Avatar billede nellersteph Nybegynder
23. marts 2004 - 20:43 #16
Hej Kim

Nu har jeg prøvet det men den fejler stadigvæk.... forId er egentlig bare et forhandler nr. altså ikke noget det i dette tilfælde skal sorteres på !

jeg får denne fejl :

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03EE)
Tegnet ')' var ventet
/side/includes/inc_sign_on.asp, line 406, column 5

linie 406 =

FROM enroll e1 " & _

skal strengen være ubrudt, jeg mener, skal den skrives ud i eet uden linie skift ?

Neller
Avatar billede drengen Nybegynder
23. marts 2004 - 20:48 #17
Strengen...

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"))
Avatar billede nellersteph Nybegynder
23. marts 2004 - 20:49 #18
Er der nogle bestemte ting jeg skal have i min tabel i databasen ?
Avatar billede drengen Nybegynder
23. marts 2004 - 20:50 #19
Som jeg har gjort det her, skal du kun have "id" i "enroll" taballen.
Avatar billede drengen Nybegynder
23. marts 2004 - 20:51 #20
Altså, "id" er den eneste attribut som SKAL være der, der må naturligvis gerne være andre attributter, såsom "forId".
Avatar billede nellersteph Nybegynder
23. marts 2004 - 20:55 #21
Hvad betyder e1 ?
Avatar billede nellersteph Nybegynder
23. marts 2004 - 20:57 #22
Jeg må sige.... jeg forstår det ikke, den fejler stadig !!!!

Set QueryForhandler = (Connect.Execute("Select Top 1 * from forhandler"))

Denne linie åbner forhandlerne !
Avatar billede nellersteph Nybegynder
23. marts 2004 - 20:58 #23
Jeg indskriver forhandlerens id i enroll tabellen under forhandler !
Avatar billede drengen Nybegynder
23. marts 2004 - 20:58 #24
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.
Avatar billede drengen Nybegynder
23. marts 2004 - 21:01 #25
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"))
Avatar billede nellersteph Nybegynder
23. marts 2004 - 21:04 #26
Den fejler stadig !!!

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
Avatar billede nellersteph Nybegynder
23. marts 2004 - 21:05 #27
Hvad nu hvis der ikke er oprette nogle kunder under nogen af forhandlerne ?
Avatar billede drengen Nybegynder
23. marts 2004 - 21:05 #28
Kan du ikke sende filen til mig, så kigger jeg på det?
kimandersen@grouptown.dk
Avatar billede nellersteph Nybegynder
23. marts 2004 - 21:09 #29
Den er hos dig nu !
Avatar billede nellersteph Nybegynder
16. april 2004 - 14:25 #30
Lukker sp. der er ikke kommet nogen løsninger på problemet !
Avatar billede celcius Nybegynder
07. maj 2004 - 15:06 #31
"SELECT * FROM Tabel ORDER BY Felt DESC"
KundeAntal=rs.fields("Felt")+1
ForhandlerID=rs.fields("Felt")

"UPDATE Tabel SET Felt=KundeAntal WHERE Felt=ForhandlerID"

Tja... det ville virke. Om det er den smarteste måde, ved jeg ikke.
Avatar billede nellersteph Nybegynder
28. juni 2004 - 12:54 #32
Hej Celcius....

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
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester