954,582 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Issue in excel report

Hi,

I am currently developing a tool in VB 6.0. I am facing a problem when i generate reports in Excel format.

The issue description:
- When I click the 'Produce report button', the vb code will run a query and fetch the record into record set
- and then it will copy into excel
- when copy paste the record set, all the number columns after any date column is changed into Date format.

Eg: The record set of a TimeSheet table have below fields
Emp_Id | Emp_Name | Date | Totalhrs | Uniq_Num

The values produced in the report is

TG0001 | Divakar | 12-Oct-2010 | 1/3/1900 | 1/1/1900

where as it should display

TG0001 | Divakar | 12-Oct-2010 | 3 | 1

I am using Excel 2007 and not sure where the issue is.

I am sure that when copy paste the record set during run time all the columns (here 'Totalhrs' and 'Uniq_Num') changed into date format after copying the date column (here 'Date')

Can anyone please help me on this?

Regards,
Divakar R

divakar.it
Junior Poster in Training
50 posts since Oct 2010
Reputation Points: 14
Solved Threads: 1
 

Sorry!!! Below is my code part where it will copy the record set into excel

xlTmp.Visible = True
    Set xlwbk = xlTmp.Workbooks.Add
    Set xlSht = xlwbk.Worksheets(1)
    Set xlrng = xlSht.Range("A2:I4001")
    xlSht.Cells(1, 1).Value = "Generating data..."
    xlTmp.ScreenUpdating = False

    
    If MyRecSet2.RecordCount > 0 Then
        Cnt = 1
        For Each fld In MyRecSet2.Fields
            xlSht.Cells(1, Cnt).Value = fld.Name
            Cnt = Cnt + 1
        Next fld

    Call xlrng.CopyFromRecordset(MyRecSet2, 4000, 100)
divakar.it
Junior Poster in Training
50 posts since Oct 2010
Reputation Points: 14
Solved Threads: 1
 

Has your issue been solved now with the code above?

AndreRet
Senior Poster
3,922 posts since Jan 2008
Reputation Points: 334
Solved Threads: 350
 

Hi Andre, Yes i found alternate solution for this..

I copied each column values rather the whole record set. This has resolved the issue however i am curious on the reason for the issue when i copy the whole record set using the above mentioned code.

Would you help me on this?

divakar.it
Junior Poster in Training
50 posts since Oct 2010
Reputation Points: 14
Solved Threads: 1
 

What code have you used in the first instance?

AndreRet
Senior Poster
3,922 posts since Jan 2008
Reputation Points: 334
Solved Threads: 350
 

The code which i used intially was

xlTmp.Visible = True
Set xlwbk = xlTmp.Workbooks.Add
Set xlSht = xlwbk.Worksheets(1)
Set xlrng = xlSht.Range("A2:I4001")
xlSht.Cells(1, 1).Value = "Generating data..."
xlTmp.ScreenUpdating = False


If MyRecSet2.RecordCount > 0 Then
Cnt = 1
For Each fld In MyRecSet2.Fields
xlSht.Cells(1, Cnt).Value = fld.Name
Cnt = Cnt + 1
Next fld

Call xlrng.CopyFromRecordset(MyRecSet2, 4000, 100)

The code which i fixed using the below:

colCount = MyRecSet2.Fields.Count
    RowIndex = 2
  
    Do While Not MyRecSet2 Is Nothing And Not MyRecSet2.BOF And Not MyRecSet2.EOF
    For Index = 1 To colCount
          xlTmp.Cells(RowIndex, Index).Value = MyRecSet2(Index - 1).Value
       Next Index
    RowIndex = RowIndex + 1
    MyRecSet2.MoveNext
    Loop
divakar.it
Junior Poster in Training
50 posts since Oct 2010
Reputation Points: 14
Solved Threads: 1
 

I think the problem started with excel reading the date field and then copied the next field which is suppose to be an integer. Unfortunately in excel, it copies column to column, trying to reproduce the previous column, hence the incorrect dates in place of the integers.

The use of a loop seems to have eliminated the problem, rather than just copying the fields over.:)

Please close this thread for us if you do not need any more help on the question.:)

AndreRet
Senior Poster
3,922 posts since Jan 2008
Reputation Points: 334
Solved Threads: 350
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You