---
title: "Numeric Field Overflow i Recordset"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/11552-numeric-field-overflow-i-recordset"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "ElMaco"
published: "2001-09-09T20:17:00.000Z"
updated: "2001-09-10T18:19:00.000Z"
replies: 1
views: 192
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/asp/11552-numeric-field-overflow-i-recordset"
---

# Numeric Field Overflow i Recordset

## #1 — ElMaco, 2001-09-09T20:17Z

Godkväll Forumet.

Jaha, då sitter man åter i klistret. Är det någon som har några pointers?

Detta har hänt...

Jag använder mig av ett ODBC-objekt och har kopplat upp mig mot en godtyckligt uppladdad Excel-fil. Sedan exekverar jag en SELECT \* på en av arbetsböckerna och placerar resultatet i ett recordset-objekt.

Följande ter sig mystiskt...

\- I Excelarket har jag explicit sagt att alla värden skall betraktas som "text". Ändå säger recordset-objektets Type-property att det är mycket annat; adDouble t.ex.

\- När första kolumnen bestämt sig för att den skall vara adDouble och sedan förtsätter till nästa post får den ett "Numeric Field Overflow" eftersom nästa post innehåller bokstäver i den kolumn som den den tidigare defierat som adDouble. Produkten av de olika bokstävernas ASCII-värden blir högre än bitgränsen för datatypen Double och därmed har vi vårt overflow.

Frågan lyder alltså...

\- Kan jag explicit tala om vilken datatyp jag vill ha på kolumnen? Eftersom lösningen är dynamiskt har jag svårt att ange kolumnnamn och därmed använda mig av CAST eller CONVERT.

\- Har någon något tips på hur jag slipper undan oväntade datatyper? Jag brottades med svenskformaterade datum ett tag också. (Jmf. 2001-01-01 med 01/01/2001).

**R:** Dessutom... om jag flyttar upp den post som har bokstäver i sig högst upp, för att dataypen skall definieras som char eller nchar eller nått, så returneras ett tomt recordset... EOF helt enkelt.

**R2:** Sa jag ODBC? Jag menar ADODB, fast det är ju nästan samma sak... ;)

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

## #2 — ElMaco, 2001-09-10T18:19Z

Denna artikeln behandlar problemet för VB:
 <http://support.microsoft.com/support/kb/articles/Q194/1/24.ASP> 

När man laddar upp en Excelfil å låter ADODB titta på den så låter den de första åtta raderna avgöra vilken datatyp kolumnen skall få. Om ett värde inte stämmer överens med datatypen returneras NULL - utan någon som helst kommentar... :/

Om man vill att ADODB skall titta lite längre ned i kolumnen innan den bestämmer sig kan man ändra detta i reg. nyckeln: HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Jet\\3.5\\Engines\\Excel 

Default är 8 rader som sagt...

Slutligen kan man inte använda "formatera celler" för att komma åt detta problem. Metadatan bevaras iallafall. Alla fält måste skrivas om, eller uppdateras med hjälp av F2 + Enter.

MEN - jag har ett problem som kvarstår... Vill någon hjälpa mig med syntaxen för följande fast i VB-script. Det är främst argumenten IMEX=1 och HDR=YES jag vill skicka... men genom vilket objekt?

```
Dim Db As Database
      Dim Rs As Recordset

      Private Sub Command1_Click()
          Set Rs = Db.OpenRecordset("Sheet1$")
          'This will print the spreadsheet Text values as Nulls.

          Do While Not Rs.EOF
              Debug.Print Rs(0)
              Rs.MoveNext
          Loop

      End Sub

      Private Sub Form_Load()
          'HDR refers to the Excel header row.
      Set Db = OpenDatabase("C:\Temp\Book1.xls", _
               False, True, "Excel 8.0; HDR=YES; IMEX=1")

      End Sub

      Private Sub Form_Unload(Cancel As Integer)
          Db.Close
          Set Db = Nothing

      End Sub
```

Tacksamt...

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/11552-numeric-field-overflow-i-recordset
