Importing Data from Access

L

lowestbass

I am importing data from access (via ADO) into Excel. However I find
that all my numerical fields are converted to text fields and I can not
do any calculations on them. Is there any way that I can convert them
back to numbers. I list my code below.

Thanks in advance for your help

Jeremy.


Sub Outpatients(PName As String)
Dim col As Integer

'Create RecordSet
Set Recordset = New adodb.Recordset
With Recordset
' Filter
Src = "SELECT * FROM GPs_PatientRecords_OP WHERE
GPs_PatientRecords_OP.PRACTICE= '" & PName & " '"


'Src = "Select * From QryChapterbyHRG where Chapter = '" & HRGCode
& " '"
Open Src, Connection

' Write the field Names
For col = 0 To Recordset.Fields.Count - 1
Worksheets("Outpatient").Range("A1").Offset(0, col).Value =
Recordset.Fields(col).Name
Next
' copy rows
Worksheets("Outpatient").Range("A1").Offset(1, 0).CopyFromRecordset
Recordset

End With

'Close the recordset
Set Recordset = Nothing
 
G

Guest

One suggestion to start: use a variable name other than Recordset. It is
never good to use a word used by the object model as a variable name in your
code.

Although tedious, you can iterate through the recordset and put the results
in your result range, converting any values as you go; to do so replace your
..CopyFromRecordset with code like this:
Dim Anchor as Range, RSField as ADODB.Field
Set Anchor = Worksheets("Outpatient").Range("A2")
With Recordset
While Not .EOF
For Each RSField in Recordset
Select Case RSField.Name
Case "ProblemField" ' you get the idea, I hope!
Anchor.Value = CInt(RSField.Value)
Case Else
Anchor.Value = RSField.Value
End Select
Set Anchor = Anchor.Cells(1,2)
Next RSField
Set Anchor = Anchor.Offset(1,0).EntireRow.Cells(1,1)
WEnd
End With
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top