02. august 2006 - 21:12Der er
26 kommentarer og 1 løsning
lidt hjælpe til enhedes styring søges
Hej jeg er ved at skulle bygge et system hvor det er meninge at man køber et antal enheder. som så er gyldig i 6 månder, meninge er så at jeg i samme tabel bare opretter et enhed hvor jeg siger -1 så trækker den det fra. men nu bliver jeg itvivl om det er sikker nok. da jeg lige har prøve at kode nåde sammen og der viker det ikke helt som det skal. har jeg oprette 10 enheder og vi så kommer til dagen efter og så trækker en enhed ud så vi er nede på 9. og vi så kommer til næste dag siger den at der er 10 enheder. og det er jo ikke så godt. Er der en her inden der kan komme med lidt ide og hjælp..
Min database ser sådan ud.. enhedtabel enhedesid fradato tildato enhed
Set GateRS = conn.execute("SELECT * FROM gatewayenhed where FromDate<=curdate() and ToDate>=curdate() and GatewayID=1") if Not GateRS.Eof then set TotalEnhederRs = Conn.execute("SELECT SUM(Enheder) AS total FROM gatewayenhed where FromDate<=curdate() and ToDate>=curdate() and GatewayID=" & int(GateRS("GatewayID")) & "") Response.write FormatNumber(TotalEnhederRs("Total"),0) else Response.write "Ingen" end if
Jeg kan ikke lige gennemskue om det løser dit problem, men dine to SQL-sætninger kan da i hvert fald kodes sammen til et enkelt kald:
sql = "SELECT Sum(Enheder) AS total FROM gatewayenhed WHERE FromDate<=curdate() AND curdate()<=ToDate AND GatewayID=1" Set GateRS = Conn.Execute(sql) enheder = TotalEnhederRs("total") If enheder > 0 Then Response.write FormatNumber(enheder, 0) else Response.Write "Ingen" end if
Nu er Eksperten.dk jo sædvanligvis "hjælp til selvhjælp". Man kommer derfor ikke uden om selv at skulle være lidt aktiv. :^)
Synes godt om
Slettet bruger
14. august 2006 - 23:42#7
Det ved jeg godt. men jeg har bare en del at se til lige nu..
Synes godt om
Slettet bruger
14. august 2006 - 23:44#8
Men nok om det.
Det jeg søger er en løsning til at kun lave en enheds system hvor jeg kan indsætte eks 500 enheder der gælder i 6 månder. men jeg kan ikke helt finde ud af hvordan jeg skal bygge det op.
Jeg går ud fra at "10 enheder" er det samme som at sige at brugeren har 10 dage tilbage?
Når at du tildeler brugeren disse 10 dage, kan du beregne en dato 10 dage ude i fremtiden og putte denne i din database som "udløbsdato". Hver gang at brugeren går på tjekker du datoen lige nu op imod udløbsdatoen, og hvis denne er overskredet, stoppes berugeren i at gå videre.
Synes godt om
Slettet bruger
15. august 2006 - 14:52#12
Nej sådan skal det ikke være det skal være sådan at kunde har 10 enheder som måske gælder i et år. sådan at når jeg så trækker en enhed skriver jeg dato. og så skriver jeg dato og enhed jeg trækker. Håber du er med ellers må jeg prøve igen..
enhedtabel enhedesid fradato tildato enhed brugt <- Sand eller Falsk
Når en enhed bruges, kan du sættte brugt til Sand.
Synes godt om
Slettet bruger
15. august 2006 - 17:49#14
Ja jeg ved godt det er lidt kompliceret system. Det var også derfor jeg ville se om jeg kun finde lidt hjælp til det sådan at jeg kan blive færdig. Men hvad ville det hjælpe at have det exter felt ? Sand/Falsk
... altså hvis du ønsker at få løst dit problem. :^)
Synes godt om
Slettet bruger
22. august 2006 - 13:05#19
Hey igen.. Undskyld jeg ikke har give lyde med der har være en del at se til !!! jeg har ikke glemt denne tråd.. har bare en del at se til.
Men kort >>
Det jeg søger er en løsning der giver min kunde mulighed for at købe 500 enheder der så virker i 6 månder. som man indtaster i et felt som 500 og når man så trækker en enhede ud laver man en ny post hvor man skriver -1 og så er man nede på 499 det kan jeg godt lave mit problem er at når jeg skal lave det med tids system. da jeg prøve at lave nåde hvor jeg har et startdato og en slut dato det var også ok. og det virker lige til vi kom til næste dag der har man så igen 500 og det holder jo ikke. det skal jo være sådan at når der er gåde en dag så glemmer den ikke.
Det jeg søger er en måde at bygge dette op på da jeg er lidt på bar bund..
- så vil dit eksempel formentlig svare til at der kan stå sådan noget som:
enhedtabel 42 02/08 2006 02/02 2007 500
- i en række i tabellen.
Jeg synes så at der mangler et felt, som angiver hvem der er ejer af disse enheder. Ellers er der jo bare en stor bunke "penge":
enhedtabel enhedesid ejerid fradato tildato enhed
Lad os sige at de 500 bobs tilhøre ejern med id'et 13.
1)
Hver gang at du skal finde ud af hvor mange enheder ejeren med ejerid=13 har, så laver du denne SQL:
sql = "SELECT sum(enhed) AS formue FROM enhedtabel WHERE fradato<=curdate() AND curdate()<=tildato AND ejerid=13"
2)
Ovenstående går ud fra at en ejer sagtens kan have købt af flere omgange, altås at hun har flere "depoter" i banken.
Når du skal trække fra et depot - altså en række - er di nådt til at kende enhedesid. Hvis du vil trække 1 enhed så gøres det sådan:
sql = "UPDATE enhedtabel SET enhed=enhed-1 WHERE enhedesid=42"
3)
Før du gør dette er det dog vigtigt at du først tjekker om det pågældende depot stadig er gyldigt:
sql = "SELECT sum(enhed) AS formue FROM enhedtabel WHERE fradato<=curdate() AND curdate()<=tildato AND enhedesid=4"
Hvis denne giver 0, er depotet ikke brugbart mere.
Synes godt om
Slettet bruger
23. august 2006 - 00:31#21
et enhedesid er det nummer jeg bruger til at se hvad gate den høre til. og i gateway har jeg så mulighed for at se hvem der ejer hvad. min ide var bare at have at den 10-10-2006 har man trukke en enhede men det må jeg vil bare smide over i en anden tabel eller hvad ?
Synes godt om
Slettet bruger
23. august 2006 - 00:34#22
hvordan gør jeg i din løsning hvis kun har 10 enheder tilbage og kun vil have 500 mere Oprette jeg en ny og hvis jeg oprette en ny hvordan ser den så at der er komme 500 mere ? for som jeg ser det tage du ud fra enhedesid=42 som måske kun har 10 tilbage. !!
I dit spørgsmål viser du hvordan tabellen enhedtabel ser ud, men du fortæller ikke noget om tabellen gatewayenhed? Hvad er formålet med denne? Og er der en helt tredie tabel til kunderne? Hvordan er forholdet imellem denne og de to andre tabeller?
Og hvordan ser disse tabeller ud?
23/08-2006 00:34:17> Jeg havde som sagt forestillet mig at det var smart med et kundeid på enhedtabel'len. Med et sådant kan en kunde have flere rækker i enhedtabel - en række for hver gang at hun har købt enheder.
Eksempel:
Hvis kunden tidligere har købt enheder, og der kun er 10 tilbage af disse, og de iøvrigt er ved at udløbe om en måned, så er der en række for dette. Når kunden køber 500 ekstra, så skal de vel ikke blandes sammen med de 10 - for disse gælder jo ikke 6 måneder, men kun 1 måned endnu. Der skal altså lægges en ny række i tabellen sådan at der er to:
Hvis du undre dig over hvad der skal står i "enhedesid", så glem lige dette felt for et øjeblik. Jeg var ikke klar over forholdet mellem dette felt og dine "gates". Jeg troede faktisk at de var en primary key for enhedtabel'len (du skal faktisk have et sådant felt).
Jeg er ikke sikker på at det er smart at du bruger enhedesid til at slå op i gateway-tabellen, for derfra at finde brugeren. På denne måde kan du jo kun have *en* række i enhedtabel'len for hver bruger. Og dermed har du et problem når en kunde stadig har enheder og vil købe nogle flere.
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.