---
title: "Fel datatyp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/121348-fel-datatyp"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "m_soderlund"
published: "2005-01-30T16:46:32.000Z"
updated: "2005-02-06T09:23:52.000Z"
replies: 10
views: 358
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/121348-fel-datatyp"
---

# Fel datatyp

## #1 — m_soderlund, 2005-01-30T16:46Z

Jag har fyra variabler som får sina värden från några fält i ett formulär. För att kunna ta emot informationen från formulärfälten måste jag använda mig av findcontrol() och mycket riktigt hittas min data. När jag dock ska sätta in information i min databas så får jag ett felmeddelande, "Typblandningsfel i villkorsuttryck", vilket ju betyder att jag har fel datatyp jämfört med den som mina fält i databasen kräver. Fälten i databasen vill ha textdata, inget annat.
Hur ska jag gå tillväga för att det hela ska bli rätt?

De fyra variablerna:

```
categoryTxt = fixt(cType(e.item.findcontrol("art_category"),htmlselect).Value)
titleTxt = fixt(cType(e.item.findcontrol("art_title"),htmlinputtext).Value)
introductionTxt = fixt(cType(e.item.findcontrol("art_introduction"),textbox).Text)
textTxt = fixt(cType(e.item.findcontrol("art_text"),textbox).Text)
```

SQL-frågan som jag exekverar:

```
SQL = "UPDATE tbl_articles SET category='" & categoryTxt & "',title='" & titleTxt & "'" & _
                ",introduction='" & introductionTxt & "',art_text='" & textTxt & "'" & _
                " WHERE id=" & cType(e.item.findcontrol("art_id"),label).Text
```

Märk väl att det inte blir något felmeddelande vad gäller WHERE-klausulen i SQL-frågan. id är en räknare och är även primärnyckel.

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

## #2 — m_soderlund, 2005-01-30T19:39Z

Skriver jag

```
categoryTxt = fixt(cType(e.item.findcontrol("art_category"),htmlselect).[b]SelectedIndex[/b])
```

i stället så genereras inget felmeddelande, men när jag ska uppdatera i databasen så hämtas inte värdena från mitt formulär - utan uppdateras med samma värden som förut.

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

## #3 — Jon, 2005-01-30T20:07Z

Hur ser det ut om du skriver ut sql-frågan innan du kör den?

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

## #4 — m_soderlund, 2005-02-01T21:12Z

Den uppdaterar i databasen med exakt samma värden som tidigare. Dvs den tar inte in information från formulärfälten.. :l

Jag tror att jag är lösningen på spåret, dock har jag ingen möjlighet att arbeta med scriptet förrän på fredag, tidigast.

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

## #5 — Pace, 2005-02-01T21:55Z

> **m_soderlund skrev:**
>
> Den uppdaterar i databasen med exakt samma värden som tidigare. Dvs den tar inte in information från formulärfälten.. :l

Det låter som att DataBind() körs när du gör en postback.

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

## #6 — m_soderlund, 2005-02-01T21:57Z

> **Pace skrev:**
>
> Det låter som att DataBind() körs när du gör en postback.

Jo, så är det nog. Och om jag *inte* kör postback så visas inte redigeringsläget när man trycker på redigera-knappen. :l

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

## #7 — Jon, 2005-02-01T22:00Z

posta lite kod!

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

## #8 — Pace, 2005-02-01T22:02Z

Då har du ett annat problem. Det kan vara att viewstate är satt till false exempelvis.

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

## #9 — m_soderlund, 2005-02-01T22:10Z

Jag har typ exakt likadan kod som den i denna artikel: [ASP.NET Data Controls Part 3: DataList](http://www.ondotnet.com/pub/a/dotnet/2003/03/10/datalist.html)

Den enda koden som inte är densamma är att jag inte kollar postback alls. Om jag kör koden nedan så kommer inte redigeringsläget fram när jag klickar på redigera-länken

```
        If Not IsPostBack Then
            LoadData()
        End If
```

Som skrivet kan jag inte visa mer kod förrän tidigast på fredag. Jag är inte hemma och kommer inte hem förrän på fredag.

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

## #10 — Jon, 2005-02-01T23:13Z

Den borde fyllas ändå eftersom du har:

```
Sub Edit_Command(ByVal sender As Object, _
	                 ByVal e As DataListCommandEventArgs)
        ' to rebind the DataList to the data source to 
		' refresh the control.
        DataList1.EditItemIndex = e.Item.ItemIndex
        LoadData()
    End Sub
```

Är du säker på att den körs?

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

## #11 — m_soderlund, 2005-02-06T09:23Z

Jag har löst problemet, och det var postback-relaterat. Det gjordes en databind() en gång - när inte postback inträffade. När postback inträffade gjordes ingen mer databind() och då var det inte så konstigt att jag inte kunde uppdatera. Det löste jag genom att låta min procedur som binder datan köras i proceduren för att utföra uppdateringen av en artikel. I page_load kollade jag om sidan gjorde postback eller inte.

```
'page_load
sub page_load(sender as object, e as eventargs)

    if not ispostback then

        dim catId as string = fixt(request.querystring("CatId"))

        if catId=3 then
            articles_binddata()
        end if

    end if

end sub
```

Så här ser proceduren för att binda datan ut:

```
'ladda lista med artiklar
sub articles_binddata()

    dim catId as string = fixt(Request.Querystring("CatId"))
    dim subId as string = fixt(Request.Querystring("SubId"))
    dim artId as string = fixt(Request.Querystring("ArtId"))
    dim SQL as string

    'visa alla artikelposter
    SQL = "SELECT id,category,title,introduction,art_text FROM tbl_articles ORDER BY id DESC"      

    dim Cn as new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("../dbms/db_articles.mdb"))
    dim Cm as new OleDbCommand(SQL, Cn)
    Cm.Connection.Open()

        adm_articles.DataSource = Cm.ExecuteReader()
        adm_articles.DataBind()

    Cm.Dispose()
    Cn.Close()

end sub
```

Proceduren för att uppdatera ser nu ut så här:

```
'uppdatera artikel/utför redigering
sub adm_articles_UpdateCommand(obj as object, e as DatalistCommandEventargs)

    dim categoryTxt as integer
    dim titleTxt, introductionTxt, textTxt, dtTxt, writerTxt, SQL as string

    categoryTxt = cType(e.item.findcontrol("art_category"),htmlselect).selectedindex-1
    titleTxt = fixt(cType(e.item.findcontrol("art_title"),htmlinputtext).value)
    introductionTxt = fixt(cType(e.item.findcontrol("art_introduction"),textbox).text)
    textTxt = fixt(cType(e.item.findcontrol("art_text"),textbox).text)

    SQL = "UPDATE tbl_articles SET category=" & categoryTxt & ",title='" & titleTxt & "'" & _
          ",introduction='" & introductionTxt & "',art_text='" & textTxt & "'" & _
          " WHERE id=" & adm_articles.DataKeys(e.Item.ItemIndex)

    dim Cn as new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("../dbms/db_articles.mdb"))
    dim Cm as new OleDbCommand(SQL,Cn)

        Cm.Connection.Open()
        Cm.ExecuteNonQuery()
 
        Cm.Dispose()
        Cn.Close
    
    [b]articles_binddata()[/b]

end sub
```

Ni ser också hur minga variabler tar emot värden korrekt. Exempelvis genom

```
cType(e.item.findcontrol("art_introduction",textbox).text)
```

Läs mer här: <http://datawebcontrols.com/faqs/Editing/EditedValuesNotSaved.shtml>

Tackar för svaren som ledde mig rätt! :bire

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/121348-fel-datatyp
