Sæt variabel navn, ud fra variabel

Tags:    visual-basic

Hej udviklere

Håber der er nogen der kan hjælpe mig med et mindre spørgsmål (VB 08):
Jeg skal loope gennem en database og hente alle poster og gemme dem i hver deres variabel (kan af gode grunde ikke bruge arrays i dette tilfælde). Deres 'Id' vil jeg samtidig have til at være variablets navn, så jeg hurtigt kan hente dem frem i en funktion.
Mit spørgsmål er, hvis jeg bruger en alm 'Dim strNavn as String = ""' , hvordan fortæller jeg at navnet her, hentes i et eksisterende variabel?

Eks.:
oRS("Id").value indeholder mit navn jeg skal bruge og er allerede declared og har en streng i sig.
Jeg vil declare et variabel som Dim oRS("Id").value as String = oRS("...").value
Det giver mening at det ikke fungerer, men hvordan fortæller jeg VB at det her er et variabel jeg bruger og ikke et dårligt forsøg på at navngive?

På forhånd tak!



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato


Hej Ronnie,

Det kan du ikke.

Og af gode grunde tror jeg ikke på at det ikke kan løses med et bedre design. Du har simpelthen ikke tænkt dig om, hvis du ikke kan benytte arrays eller lignende.

Med venlig hilsen
Ieet





Hej Ronnie,

Det kan være jeg misforstår dine intentioner, men for mig at se så anskuer du problemet fra den forkerte vinkel. Du vil navngive din variabel ud fra en værdi i databasen, tilsyneladende for at opnå lokalisering af tekststrenge. Men det smarte med variabler er jo netop at de, ligegyldigt deres navn, kan indeholde forskellige værdier, eller sagt på en anden måde: Tekststrenge på forskellige sprog.

Hvorfor ikke bruge en løsning hvor du indlæser værdierne i databasen og assigner til dine variabler, der så bruges rundt omkring i programmet? Du kan få fat i dine variabler via deres navn og assigne værdier til dem, med den smukke, smukke .NET teknologi kaldet Reflection :)

Som sagt, det kan være jeg misforstår dine intentioner, men hvis ikke, så ville jeg gøre noget i stil med ovenstående :)

Mvh.

Kasper (TSW)



Ja, det skaber lidt problemer når man starter på et projekt hvor du ikke ved hvad det faktisk skal kunne og din chef kommer med nye rettelser konstant, fordi han ikke selv har tænkt det igennem fra starten af.
Mit problem nu at jeg har bygget systemet op sådan, at der hentes tekster fra en sprogdatabase når de skal bruges. Det skaber en del unødig trafik og alt for mange queries og da jeg har brugt navne og ikke tal til identity, skal jeg bruge dage på at lave det hele om for at benytte et array. Derudover ryger lidt af idéen med databasen :(

Men tak for svaret! Jeg må bide i det sure æble og få rettet op på det.



Hej Kasper, tak for dit svar.
Problemet ligger i, at jeg over alt i programmet henter mine tekster sådan:
Fold kodeboks ind/udKode 

som altså kalder til min funktion 'i18' der på nuværende tidspunkt henter den streng i databasen der matcher ID samt det valgte sprog.
Fold kodeboks ind/udKode 


For ikke at lave alle disse calls om (for ikke at tale om databasen der også skal gennemgåes), ville det være smart hvis jeg bare kunne hente dem alle på én gang i variabler ved Page load og så hente dem når de skal bruges, på samme måde som nu, ved bare at lave i18 funktionen lidt om.
Ved godt det er en lidt ulækker lappeløsning, men den ser heller ikke ud til at være mulig jf. Ieet.

-----
Edit: Tak for hjælpen til jer begge. Jeg er gået i gang med at lave om i strukturen, så jeg kan bruge arrays istedet. Det er i hvert fald ikke for tidligt at få det gjort! Håber det er ok at jeg bare giver Ieet de 50 point, du har så mange Kasper (*host*, *host*) :D



Indlæg senest redigeret d. 13.08.2008 16:25 af Bruger #13985
Ronnie, i det her tilfælde ville jeg loade alle værdierne når du starter applikationen og placere dem i en Hashtable/et Dictionary. De er super hurtige at tilgå, så længe du har en unik key pr. streng du gerne vil have opbevaret. På den måde skal du også kun loade dine tekststrenge én gang pr. applikation start.

Mvh.

Kasper (TSW)



Hmm ja, kan da godt lige kigge på det. Databasen er dog dynamisk idet at der stadig tilføjes tekster til den. Det kan heldigvis gøres med en kort query, så jeg tror det bliver løsningen.



t