---
title: "från databasen till array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/162002-från-databasen-till-array"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Vinnaren"
published: "2007-06-27T12:46:39.000Z"
updated: "2007-07-01T08:20:19.000Z"
replies: 11
views: 692
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/162002-från-databasen-till-array"
---

# från databasen till array

## #1 — Vinnaren, 2007-06-27T12:46Z

Hej

Jag behöver först lite hjälp med att hämta ut rätt data från en tabell. (VB.NET)
Har följande kod:

```
    Dim conString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Databas.mdb"
    Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(conString)
    Dim objDataSet As DataSet = New DataSet()
    Dim objDataAdapter As OleDb.OleDbDataAdapter

    Private Sub Start_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            getNamn()
            cbNamn.DataSource = objDataSet.Tables("Namn")
            cbNamn.DisplayMember = "Namn"
        Catch
            Call fel()
        End Try
    End Sub

    Private Sub getNamn()
        Const sql = "Select Namn, nID FROM Namn ORDER BY nID DESC"
        objDataSet = New DataSet()
        conn = New OleDb.OleDbConnection(conString)
        conn.Open()
        objDataAdapter = New OleDb.OleDbDataAdapter(sql, conn)
        objDataAdapter.Fill(objDataSet, "Namn")
        conn.Close()
    End Sub

    Private Sub btnStarta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStarta.Click

    End Sub
```

 

Det finns en dropdown ruta samt en knapp. I droppdown rutan visas det som koden ovan hämtar. Hur gör jag så jag får reda på vilket id (uID) den valda posten har som finns i dropdown rutan när användaren klickar på knappen?

Tacksam för all hjälp     :stud

Permalänk: https://www.webforum.nu/p/162002

## #2 — Glitter, 2007-06-27T14:35Z

Jag brukar köra AutoPostBack="true" på DropDownListen och följande kod i onload

```
dim li as listitem
dim i as integer
for i to antalposter
li = new listitem
li.value = id
li.text = text
DropDownList.items.add(li)
next
```

i DropDownList.SelectedValue får du värdet sedan...

Koden är skriven på frihand så det kanske är fel någonstans.

Permalänk: https://www.webforum.nu/p/1996551

## #3 — Vinnaren, 2007-06-27T16:01Z

tack, men får felmeddelandet:

Type 'listitem' is not defined.	

på raderna:

```
Dim li As listitem
```

 
samt

```
li = New listitem
```

 

hur löser jag detta?

Permalänk: https://www.webforum.nu/p/1996579

## #4 — emission, 2007-06-27T16:27Z

Värdet ligger i cbNamn.SelectedValue, men du måste ange ValueMember på droppen.

Dessutom, globala variabler som inte behövs är ondska.

```
 'Bör hellre ligga i en config-fil
 Dim conString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Databas.mdb"
    

    Private Sub Start_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
           
            cbNamn.DataSource =  getNamn()
	    cbName.ValueMember = "nID"
            cbNamn.DisplayMember = "Namn"
        Catch
            Call fel()
        End Try
    End Sub

    Private Function getNamn() As DataTable
        Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(conString)
	Dim objDataTable As DataTable = New DataTable()
	Dim objDataAdapter As OleDb.OleDbDataAdapter

	Const sql = "Select Namn, nID FROM Namn ORDER BY nID DESC"
        conn.Open()
        objDataAdapter = New OleDb.OleDbDataAdapter(sql, conn)
        objDataAdapter.Fill(objDataTable)
        conn.Close()
	Return objDataTable
    End Sub

    Private Sub btnStarta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStarta.Click
		'Värdet ligger i cbNamn.SelectedValue (för det är väl inte ASP.NET?)
    End Sub
```

Permalänk: https://www.webforum.nu/p/1996587

## #5 — Vinnaren, 2007-06-27T16:51Z

tack, det funkade perfekt   :p 

Nu vill jag att det som hämtas när man klickar på knappen ska sparas i 2  arrayer.

```
    Private Sub btnStarta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStarta.Click
        GroupBox1.Visible = False
        Panel1.Visible = True

        Dim valdID As Integer = cbNamn.SelectedValue
        getOrd(valdID)

    End Sub

    Private Function getOrd(ByVal valdID As Integer) As DataTable
        Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(conString)
        Dim objDataTable As DataTable = New DataTable()
        Dim objDataAdapter As OleDb.OleDbDataAdapter

        Const sql = "Select ord1, ord2 FROM Ord WHERE nID = " & valdID & ""
        conn.Open()
        objDataAdapter = New OleDb.OleDbDataAdapter(sql, conn)
        objDataAdapter.Fill(objDataTable)
        conn.Close()
        Return objDataTable
    End Functio
```

 

Hur får jag ord1 i en array, sen ord2 i en annan array? eller kan man göra typ en matris?

Får ett litet felmeddelande på min sql sats:
Constant expression is required.

Hur löser jag detta??

Tacksam för all hjälp   :stud

Permalänk: https://www.webforum.nu/p/1996592

## #6 — emission, 2007-06-27T17:33Z

Om du verkligen måste ha två arrayer så får du loopa igenom DataTable:n och bygga upp dem själv. Annars är ju tabellen i sig en matris.

Felmeddelandet kan betyda vad som helst. Har du något värde i "valdID"?

Tre saker:

SelectedValue är en sträng. valdID är en integer. Du bör typomvandla (VB gör det automatiskt om inte Option Strict är påslaget. Att programmera utan Option Strict är också ondska)

Const sql är ingen konstant och ska inte definieras som en sådan.

Man ska ALLTID använda parametriserade frågor, ALDRIG bygga ihop SQL-strängar (säkerhet och prestanda)

Ungefär:

```
Dim sql As String= "Select ord1, ord2 FROM Ord WHERE nID = ?"
conn.Open()
objDataAdapter = New OleDb.OleDbDataAdapter(sql, conn)
objDataAdapter.SelectCommand.Paramaters.Add("nID",OleDbType.Integer,4).Value=valdID
'osv.
```

Permalänk: https://www.webforum.nu/p/1996596

## #7 — Vinnaren, 2007-06-27T17:42Z

tack   :bire 

får felmeddelandet:
'Paramaters' is not a member of 'System.Data.OleDb.OleDbCommand'.

vad är det jag ska importera?

samt hur gör jag för att få ut tex få ut 1 raden av ord1 och ord2?     :q

Permalänk: https://www.webforum.nu/p/1996600

## #8 — Josef, 2007-06-27T18:24Z

Tror att Param**e**ters fungerar bättre. ;)

Permalänk: https://www.webforum.nu/p/1996626

## #9 — Vinnaren, 2007-06-27T18:29Z

haha,   :i , tack   :e 

Hur gör jag nu för att få ut första raden från det som hämtas från databasen? ord1 samt ord2 ??  :q

Permalänk: https://www.webforum.nu/p/1996629

## #10 — emission, 2007-06-27T23:04Z

Loopa igenom en DataTable

```
For Each row as DataRow in objDataTable.Rows
   'Värdet kan hämtas ur row("kolumnnamn")
Next
```

Första raden:

```
If objDataTable.Rows.Count>0
   'Värdet kan hämtas ur objDataTable.Rows(0)("kolumnnamn")
End If
```

Permalänk: https://www.webforum.nu/p/1996683

## #11 — emission, 2007-06-27T23:06Z

Jag rekommenderar att du använder Visual Studio (t.ex. gratisversionen) eller SharpDevelop när du kodar, så slipper du undra över saker som "Paramaters"-stavningen.

Permalänk: https://www.webforum.nu/p/1996684

## #12 — Vinnaren, 2007-07-01T08:20Z

tack emission, nu funkar den  (y) .

Permalänk: https://www.webforum.nu/p/1997380

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/162002-från-databasen-till-array
