Avatar billede karsten_larsen Praktikant
13. februar 2007 - 09:57 Der er 20 kommentarer og
1 løsning

Data fra database skal bruges som data i et array

Skal have data fra database over til et array - men det vil ikke som jeg gerne vil.

Her følger lidt kode:

Dim DemoArray as Byte()

Felt1 fra database er = 0,2,35,22,7,2,77,0,3,9
Værdi fra database hentes via SqlDataReader, således
Do
  Array = Reader("Felt1")
Loop While Reader.Read

Det giver fejlen: et objekt af typen "System.String" kan ikke konverteres til typen "System.Byte", det samme gælder hvis DemoArray er string etc.,

Hvad gør jeg galt?


???:-) karsten_larsen
Avatar billede kalp Novice
13. februar 2007 - 10:00 #1
Convert.ToByte(Reader("Felt1"))

har ikke lige tjekket om den metode findes, men vil gætte på convert klassen kan
Avatar billede kalp Novice
13. februar 2007 - 10:01 #2
hvis du er heldig kan du lave

(Byte)Reader("Felt1")

men ved det ikke.

vil gætte på dit felt1 er varchar eller sådan noget
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 10:08 #3
ja feltet er varchar
Avatar billede kalp Novice
13. februar 2007 - 10:09 #4
"DemoArray er string etc., "

Der kan det ikke have været samme fejl, men måske skrev den at den ikke kunne konvertere object til string?

i så fald vil dette virke

Dim DemoArray as string()

(ved ikke om string skal være String i VB)

og

(string)Reader("Felt1")


igen så ved jeg ikke om string skal være stort og småt i  VB.. men du skal typecaste det du hiver ud.
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 10:11 #5
næhe det vil ikke virke - Value af type byte cannot be converted to 1-demensional array of byte
Avatar billede kalp Novice
13. februar 2007 - 10:15 #6
nu er der også lidt rod i din egen kode.

du opretter
DemoArray

men gemmer i

Array

det er en ting.. og så tjekker jeg lige om ikke også du skal angive positioner i sådan et array der.
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 10:15 #7
Dim DemoArray as string()

DemoArray = Convert.ToString(Reader("Felt1"))

eller

DemoArray = Reader("Felt1").ToString

Giver sammen fejl

Value af type string cannot be converted to 1-demensional array of string
Avatar billede kalp Novice
13. februar 2007 - 10:17 #8
ja jeg kan se du skal angive position i dit array.. læs lige
http://www.startvbdotnet.com/language/arrays.aspx

DemoArray(0) = (sttring)Reader("Felt1")

vil gemme på første plads.. men du skal jo gøre det dynamisk
Avatar billede kalp Novice
13. februar 2007 - 10:18 #9
lige nu prøver du at gemme feltets indhold som et DemoArray og altså ikke indholdet af feltet i en position i dit array.. derfor fejlen.
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 10:23 #10
okay - det kan jeg godt se, men det betyder at jeg gemmer hele Felt1 i position 0 i DemoArray, for når jeg henter DemoArray (0).

Så hvis det skal blive til følgende
DemoArray(0) = 0
DemoArray(1) = 2
DemoArray (2)= 35

hvordan så?
Avatar billede kalp Novice
13. februar 2007 - 10:26 #11
Hvis det er okay med dig så kan du lave en ArrayList.

Dim DemoArray As New ArrayList()


så virker dette

DemoArray.Add((string)Reader("Felt1"))

og igen.. måske skal string være med stort S:)
Avatar billede kalp Novice
13. februar 2007 - 10:28 #12
ps. du skal importere System.Collections;
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 10:30 #13
Prøver lige
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 10:33 #14
DemoArray = DemoArray.Add((string)Reader("TestResultUnScored")) accepteres ikke i VB
Avatar billede kalp Novice
13. februar 2007 - 10:34 #15
skal også kun være

DemoArray.Add((string)Reader("TestResultUnScored"))
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 10:47 #16
hmm - det er så lige til i asp 3.0 men selv simple ting kan give bøvl her i .Net

Prøver helt forfra.

Dim Data as string
Data = Reader("Felt1").ToString.Trim

Så burde jeg vel kunne splitte Data om til et Array sådan her

Dim DataArray as byte
DataArray = Split(Data,",")

også burde DataArray(2) give værdie 35

Er det ikke rigtigt forstået?
Avatar billede kalp Novice
13. februar 2007 - 10:52 #17
ja hvis dit felt1 altså bare var en kolonne som indholdt hele denne streng (0,2,35,22,7,2,77,0,3,9)

men du bliver nød til at lave dit DataArray til et string array.. eller char og derefter convertere indholdet til byte.

men du har forstået det rigtigt.
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 11:03 #18
Du mener sådan her

Dim Data as string
Data = Reader("Felt1").ToString.Trim


Dim DataArray as string
DataArray = Split(Data,",")

Ctype(DataArray(2),String)Integer skal så give 35
Avatar billede kalp Novice
13. februar 2007 - 11:08 #19
du læser en værdi fra dit array sådan her
DataArray.Item(x)
Avatar billede karsten_larsen Praktikant
13. februar 2007 - 13:55 #20
gawi - vil du lave et svar jeg fik det til at virke.

Mange tak for hjælpen
Avatar billede kalp Novice
13. februar 2007 - 14:00 #21
selv tak:)
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