Avatar billede michaelfp Nybegynder
21. september 2004 - 19:17 Der er 8 kommentarer og
2 løsninger

Type mismatch fejl - hvorfor?

Hej eksperter

Jeg erklærer en global variabel med Public Kontaktpertsonarray

Jeg har koden:

    SqlSTR = "Select * from skontaktpersoner ORDER BY navn, kundeid"
    Trs.Open sqlSTR, conn, 3, 3
    t = 0
    Do While Not trs.EOF
      t = t+1
      reDim Preserve Kontaktpersonarray(1,t)
      kontaktpersonarray(0,t-1) = Trs("kontaktid")
      Kontaktpersonarray(1,t-1) = Trs("navn")
      Trs.Movenext
    Loop
    Trs.Close

I linien med  reDim Preserve Kontaktpersonarray(1,t)
får jeg fejlen Type mismatch - kan nogen forklare hvorfor?
Avatar billede tobocom Nybegynder
21. september 2004 - 19:24 #1
Du skal erklære den med dim og ikke public, public bruges kun i VB og .NET. Koden ser rigtig nok ud.
Avatar billede michaelfp Nybegynder
21. september 2004 - 19:28 #2
Hej Tobocom

Hvis jeg erklærer med dim - kan jeg så referere til arrayet på en anden side?
(meningen er at jeg vil indlæse data i et array og bruge dette array globalt i
dropdowns - istedet for at skulle gennemløbe recordsettet hver gang)
Avatar billede michaelfp Nybegynder
21. september 2004 - 19:29 #3
Jeg får samme fejl med dim!
Avatar billede eagleeye Praktikant
22. september 2004 - 09:13 #4
prøv at lave:

Public Kontaktpertsonarray

om til dette så det er et array:

reDim Kontaktpersonarray(1,1)
Avatar billede michaelfp Nybegynder
22. september 2004 - 18:35 #5
Hej eagleeye, tak for forslag.
Hvis jeg ændre Public til redim, så får jeg ikke type mismatch fejl MEN:

Arrayet indeholder kun én post - selvom tabellen har 3771 poster. Hvis jeg
laver en for t = 0 to ubound(kontaktpersonarray) efter løkken (se koden i spørgsmålet) så skriver den kun en post!

En anden ting er, at hvis jeg fra en anden side, referere til kontaktpersonarray, så ser det ud som om, at arrayet er tomt!

Det jeg gerne ville med koden/arrayet, var at indlæse posterne i et array, når brugeren logges på, og derefter bruge arrayet i dropdowns. Herved sparer jeg den tid det tager at indlæse posterne, hver gang siden loades. Hvis så kontaktpersonerne ændres eller der oprettes en ny, så opdatere jeg arrayet.

Hvordan ville du løse denne problematik - andre måder end array?

P.S jeg logger af nu, men går online igen senere iaften, for at se om jeg kan være så heldig at få fler af dine fantastiske forslag. På forhånd tak.
Avatar billede eagleeye Praktikant
22. september 2004 - 19:06 #6
Prøv loopet sådan her:

for t = 0 to ubound(kontaktpersonarray,2)
Avatar billede michaelfp Nybegynder
22. september 2004 - 22:06 #7
Hej eagleeye,
Din indsats er enorm prisværdig!
Jo - nu indeholder array'et poster MEN:

I den .inc fil, hvor posterne indlæses i arrayet, vises de - men hvis jeg referere til arrayet fra en anden side, så er det tomt!
Med andre ord: For t = 0 to ubound(kontaktpersonarray,2) virker "lokalt"
men ikke globalt!
Avatar billede eagleeye Praktikant
22. september 2004 - 22:24 #8
Det forstår jeg ikke. Det er som om din funktion ikke rette i din globale variable men laver sin egen.

Prøv at skrive:
dim Kontaktpersonarray
reDim Kontaktpersonarray(1,1)
Avatar billede michaelfp Nybegynder
22. september 2004 - 22:40 #9
Så er jeg tilbage ved type mismatch!

Problemet virker total ulogisk, idet henvisningerne til, hvordan man bruger arrays, redim o.s.v tilsyneladende ikke virker efter hensigten. Jeg er ikke indstillet på at gå på komprommis med god programmeringsskik.
Jeg vælger derfor at lave en button, som man kan klikke på og derpå får vist en liste, man kan vælge i. Altså en anden (selvudviklet) dropdown, som først eksekvere indlæsningen af poster fra recordsettet, når man specifik beder om det.

Du skal - selvom jeg ikke fik det løst - have nogle points - så skal vi ikke dele puljen? Send et svar - din iver og indsats er som sædvanlig prisværdig.
Avatar billede eagleeye Praktikant
22. september 2004 - 22:44 #10
Ok :)
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
Kurser inden for grundlæggende programmering

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