Jeg vil gerne optimere min kode. Jeg vil gerne lave en løkke og gennem løkken kalde forskellige recordsets. Hvordan får jeg uden at gentage samme linie 5 gange (som det er tilfældet nu) defineret og udskrevet min variabel n_count_i og mit recordset rs_count_i? Jeg kan ikke finde svaret herinde Kan jeg lave et array??? Skal jeg bruge eval eller execute??? Hvor og hvordan angiver jeg min dynamiske variabel???
SQL_count_1 = "SELECT Count(main_dep.dep_superid) AS count_1 FROM dbo.main_dep WHERE (((main_dep.dep_id_past)='" & dep_id_past & "') AND ((main_dep.dep_id_future)='" & dep_id_future & "'));" SQL_count_2 = "SELECT Count(main_dep.dep_superid) AS count_2 FROM dbo.main_dep WHERE (((main_dep.dep_id_past)='" & dep_id_past & "') AND ((NOT (main_dep.dep_id_future)='" & dep_id_future & "')));" SQL_count_3 = "SELECT Count(main_dep.dep_superid) AS count_3 FROM dbo.main_dep WHERE (((NOT (main_dep.dep_id_past)='" & dep_id_past & "'))) AND (((main_dep.dep_id_future)='" & dep_id_future & "'));" SQL_count_4 = "SELECT Count(main_dep.dep_superid) AS count_4 FROM dbo.main_dep WHERE (((main_dep.dep_id_future)='" & dep_id_past & "'));" SQL_count_5 = "SELECT Count(main_dep.dep_superid) AS count_5 FROM dbo.main_dep WHERE (((main_dep.dep_id_past)='" & dep_id_future & "'));"
SET rs_count_1 = Conn.Execute(SQL_count_1) SET rs_count_2 = Conn.Execute(SQL_count_2) SET rs_count_3 = Conn.Execute(SQL_count_3) SET rs_count_4 = Conn.Execute(SQL_count_4) SET rs_count_5 = Conn.Execute(SQL_count_5)
for i = 1 to 5 SQL_count(i) = "SELECT Count(main_dep.dep_superid) AS count_1 FROM dbo.main_dep WHERE "& SQL_where(i) SET rs_count(i) = Conn.Execute(SQL_count(i)) n_count(i) = rs_count(i)("count_"& i) next
Hej Glen. Det virker ikke umiddelbart, men jeg tror, at du er inde på det rigtige med arrays. Lige nu er jeg på arbejde og kan ikke lave fejlfinding. Men i aften vender jeg frygteligt tilbage og kigger på dit forslag. Tak for hjælpen indtil nu. Der er FYI problemer med følgende linier: SQL_where = "(((main_dep.dep_id_past)='" & dep_id_past & "') AND ((main_dep.dep_id_future)='" & dep_id_future & "'));" SQL_where = "(((main_dep.dep_id_past)='" & dep_id_past & "') AND ((NOT (main_dep.dep_id_future)='" & dep_id_future & "')));" SQL_where = "(((NOT (main_dep.dep_id_past)='" & dep_id_past & "'))) AND (((main_dep.dep_id_future)='" & dep_id_future & "'));" SQL_where = "(((main_dep.dep_id_future)='" & dep_id_past & "'));" SQL_where = "(((main_dep.dep_id_past)='" & dep_id_future & "'));"
Hej Glen, Nu melder den fejl på linien n_count(i) = rs_count(i)("count_"& i) Error Type: ADODB.Recordset (0x800A0CC1) Item cannot be found in the collection corresponding to the requested name or ordinal. /tmmc/mmantmmc_image3.asp, line 104
Jeg er ret træt nu og vil gerne hjem fra arbejde (jeg får ikke løn for det her). Du er velkommen til at rette min syntaks, men jeg kigger selv på det i morgen, og du får point uanset hvad for at have hjulpet mig på vej. Hvis du retter syntaksen, må jeg hellere tage dobbelt op på points, nu hvor du har hjulpet så meget og brugt meget tid.
Foreløbig kode, hvor "AS count_1" vel også skal rettes, er som følger
dim SQL_where(5) dim SQL_count(5) dim rs_count(5) dim n_count(5)
for i = 1 to 5 SQL_count(i) = "SELECT Count(main_dep.dep_superid) AS count_1 FROM dbo.main_dep WHERE "& SQL_where(i) SET rs_count(i) = Conn.Execute(SQL_count(i)) n_count(i) = rs_count(i)("count_"& i) next
Tak for hjælpen indtil nu. Det er værdsat. Jeg er online igen i morgen tidlig.
Okay, jeg havde slet ikke set at AS count_1 varieret :)
Men der kan laves således: for i = 1 to 5 SQL_count(i) = "SELECT Count(main_dep.dep_superid) AS count_"& i &" FROM dbo.main_dep WHERE "& SQL_where(i) SET rs_count(i) = Conn.Execute(SQL_count(i)) n_count(i) = rs_count(i)("count_"& i) next
Nu kan der vel snart ikke være flere fejl i det ;)
Man skal ikke kaste med sten når man selv bor i et glashus. Hvad med at lukke dine egne spørgsmål inden du har tralt med at andre lukke spørgsmål du ikke engang har deltaget i?
Hej eagleeye, Mit spørgsmål er mindre end to uger gammelt, som du kan se. De spørgsmål, som jeg ville have lukket var 2 år gamle. Jeg har ikke været på arbejde p.g.a. studiestart og har derfor ikke haft mulighed for at afprøve de gode forslag. Jeg glæder mig dog meget til det i næste uge. Venlige hilsner
Jeg fik aldrig prøvet dit endelige forslag. Det virkede fint nok, da jeg var færdig med det og folk var imponerede nok, så jeg gad ikke at gøre mere ved det. Du får dine point. Tak for hjælpen og undskylder den lange ventetid.
MVH Tommy
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.