Avatar billede humlebien Novice
15. april 2003 - 10:42 Der er 16 kommentarer og
1 løsning

Resultat af SQL over i en Label

Jeg er lidt grøn i det her ASP.Net, så jeg skal lige bruge lidt "starthjælp".
Jeg skal have resultatet af min SQL ud i Label1. Jeg har nedenstående, men mangler det der sætter Label1.text = resultat af SQL

Dim StrSQL as string = "select tekst from tekst where tekst_id = '30.0.0.0.0.0.0.0';"
Dim strConnection as string = "user id=blabla;password=sshhhhh;database=nyehs_prod;server=SQL1;Connect Timeout=30"
Dim objDataSet as new DataSet()
Dim objConnection as New SqlConnection(strConnection)

Dim objDataAdapter as new SqlDataAdapter(strSQL, strConnection)
objDataAdapter.Fill(objDataSet, "tekst")

Label1.text = ??????
Avatar billede clausjul Nybegynder
15. april 2003 - 10:45 #1
Du kan i stedet for bruge

Dim datareader as new SqlDataReader(strSQL,strConnection);
datareader.Read();
Label1.Text = datareader("tekst");
datareader.Close();
Avatar billede madrich Nybegynder
15. april 2003 - 10:46 #2
Label1.text = objDataSet
Avatar billede disco_keld Nybegynder
15. april 2003 - 10:48 #3
HEj.....

Lav er business lag, som indeholder dine metoder (funktioner og procedure).

Instantiere der efter din class med en variabel reference, og sæt derefter din label til dit nye objekt.MinMetode()

F.eks.:

Dim loadLabel As New Class1()
Label.text = loadLabel.MinMetode()

Håber det gav mening!

:-)

Mvh

DK
Avatar billede disco_keld Nybegynder
15. april 2003 - 10:49 #4
>>> claushjul!!!

man kan ikke smide en datareader dirkete i en label som en string værdi!
Avatar billede z42cool Nybegynder
15. april 2003 - 10:50 #5
Hvis du kun skal have en værdi ud af din database skal du ikke bruge et dataset, ej heller en datareader som clausjul forslår, men derimod ExeccuteScalar metoden på Command objektet som netop er beregnet til denne situation:

Dim StrSQL as string = "select tekst from tekst where tekst_id = '30.0.0.0.0.0.0.0';"
Dim strConnection as string = "user id=blabla;password=sshhhhh;database=nyehs_prod;server=SQL1;Connect Timeout=30"
Dim objConnection as New SqlConnection(strConnection)

Dim objCommand as new SqlCommand(strSQL, objConnection)
objConnection.Open()
Label1.text = CType(command.ExecuteScalar(), String)
objConnection.Close()
Avatar billede z42cool Nybegynder
15. april 2003 - 10:52 #6
>>> disco_keld!!!!

Det er heller ikke det han gør. Han indekserer jo netop readeren (datareader("tekst")) og derfor er det et object han vil putte ind i Label1.Text. Omend det måske ville være mere korrekt - og i hvert fald mere forståeligt - at caste explicit eller bruge ToString metoden, så gør VB's brug af varianter vist nok at castet sker implicit og at det derfor er OK!
Avatar billede humlebien Novice
15. april 2003 - 11:00 #7
> z42cool

Jeg får denne fejl

'ExecuteScalar' is not a member of 'String'.

det henviser til denne linie

Label1.text = CType(command.ExecuteScalar(), String)
Avatar billede disco_keld Nybegynder
15. april 2003 - 11:05 #8
ja........

men derfor kan man ikke gøre det alligevel, da man ikke implicit kan lave et object om til en string.

måske det virker, med Explicit konvertering.

Label1.Text = CType(datareader("tekst"), String)

men det er ikke pænt og blande ens forretningslogik med ens præsentations kode.
Avatar billede disco_keld Nybegynder
15. april 2003 - 11:06 #9
>>> humlebien

koder du dine egne klasser?
Avatar billede z42cool Nybegynder
15. april 2003 - 11:06 #10
Jeg skal ærligt indrømme at jeg ikke er så stærk i VB, men prøv med

Label1.Text = objCommand.ExecuteScalar().ToString()
Avatar billede disco_keld Nybegynder
15. april 2003 - 11:10 #11
det holder ikke det kode der.....

det er low level code, med inline SQL!

Men det er mening, måske andre har en anden.

Hvis ikke du kender til N-TIER modellen, så kan du læse om den her:

http://www.dotnetforum.dk/forum/showpost.aspx?PostID=515
Avatar billede humlebien Novice
15. april 2003 - 11:13 #12
> z42cool: Nu virker det!

> Disco_keld: Hvis du læser mit første indlæg ordentligt, så vil du kunne se at jeg er grøn i det her .Net-værk, så "nej, jeg koder ikke mine egne klasser" - aner ikke hvordan det gøres.......
Avatar billede z42cool Nybegynder
15. april 2003 - 11:18 #13
Super!

>Disco_keld: Hvis man er ved at læse ASP.Net og udelukkende leger lidt for at forstå syntaks osv. så er det temmelig meget overkill at inddele sin kode i lag og jeg vil skyde på at for humlebien forstyrrer kommentarer vedr. n-tier modeller mere end de hjælper.
Avatar billede disco_keld Nybegynder
15. april 2003 - 11:24 #14
Oki....... over så lige det med det "grønne"!

Ups,- det var da bare et forslag...

Keep coding :-)
Avatar billede humlebien Novice
15. april 2003 - 11:38 #15
OK - så langt, så godt....
Hvad gør jeg hvis jeg vil have flere felter ud af SQL-forespørgslen. Altså "select * from tekst where tekst_id = '30.0.0.0.0.0.0.0'"

label1.text = tekst
label2.text = titel
label3.text = dato
Avatar billede z42cool Nybegynder
15. april 2003 - 11:52 #16
Nu bør du jo nok for god ordens skyld lukke dette spørgsmål da der er svaret, men du bruger en datareader hvis du skal LÆSE flere rækker:

Dim StrSQL as string = "select * from tekst where tekst_id = '30.0.0.0.0.0.0.0';"
Dim strConnection as string = "user id=blabla;password=sshhhhh;database=nyehs_prod;server=SQL1;Connect Timeout=30"
Dim objConnection as New SqlConnection(strConnection)

Dim objCommand as new SqlCommand(strSQL, objConnection)
objConnection.Open()
Dim objReader as objCommand.ExecuteReader()

label1.Text = objReader[0].ToString()
label2.Text = objReader[1].ToString()
label3.Text = objReader[2].ToString()

objConnection.Close()
Avatar billede humlebien Novice
15. april 2003 - 11:58 #17
ok - 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