ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Importing Data from Access (https://www.excelbanter.com/excel-programming/347035-importing-data-access.html)

lowestbass

Importing Data from Access
 

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


--
lowestbass
------------------------------------------------------------------------
lowestbass's Profile: http://www.excelforum.com/member.php...o&userid=29255
View this thread: http://www.excelforum.com/showthread...hreadid=489749


K Dales[_2_]

Importing Data from Access
 
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
--
- K Dales


"lowestbass" wrote:


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


--
lowestbass
------------------------------------------------------------------------
lowestbass's Profile: http://www.excelforum.com/member.php...o&userid=29255
View this thread: http://www.excelforum.com/showthread...hreadid=489749




All times are GMT +1. The time now is 12:14 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com