|
-
Jan 12th, 2010, 09:23 AM
#1
Thread Starter
Lively Member
Only getting one row from the database?
Hey,
So i'm trying to get all the rows from my database and put everything on an excel spreadsheet. The problem is, the output in the excel sheet is only showing 1 of the 3 rows i have. I'm not sure why this is happening. The code is kind of long but help would be greatly appreciated!
Code:
Imports Microsoft.Office.Interop
Imports System.Data.SqlClient
Imports System.IO
Public Class GenerateReports
Public Shared Sub GetAll()
Dim objExcel As Excel.Application = DirectCast(CreateObject("Excel.Application"), Excel.Application)
Dim bkWorkBook As Excel.Workbook = DirectCast(objExcel.Workbooks.Add(), Excel.Workbook)
Dim shWorkSheet As Excel.Worksheet = DirectCast(bkWorkBook.Sheets("Sheet1"), Excel.Worksheet)
Dim rngRowStart As Excel.Range = DirectCast(shWorkSheet.Cells(1, 1), Excel.Range)
Dim oPageSetup As Excel.PageSetup = DirectCast(shWorkSheet.PageSetup, Excel.PageSetup)
Dim oRange As Excel.Range = DirectCast(shWorkSheet.Columns("A:BZ"), Excel.Range)
Dim criteria As String
Dim i As Integer = 0
Dim sSQL As String = String.Empty
Dim myConnection As String
Dim ds As New DataSet
Dim path As String
criteria = ""
path = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
'set up database connection
myConnection = "Data Source=DEVCON011\SQLEXPRESS;Initial Catalog=2LT_Tracker;Integrated Security=True"
Dim objConnection As New SqlConnection(myConnection)
'querys the database for the columns stated below. the following query retrieves data from more than one table
sSQL = "SELECT m.StationName, coop.Name, field.Name, lines.LinesOperationCenter, provincial.ProvincialLinesZone, stationtype.StationType, status.Status, cooppriority.Priority, priority.Priority, m.QualityOfDrawing, m.StationkV, m.FeederkV, m.DateOPStartedRevision, m.DateOPCompletedDraftDrawing, m. DateOPVerifiesDrawings,DateSendForFieldVerification, m.DateDrawingCompletedByField, m.DateDrawingSuppliedToBit, m.ReleaseDate, m.CompletionDate, m.ConnectedLoad, m.KMSDone FROM [2LT_Main] m, [2LT_Coop] coop, [2LT_Fields] field, [2LT_LinesOperationCenter] lines, [2LT_ProvincialLineZones] provincial, [2LT_StationType] stationtype, [2LT_Status] status, [2LT_CoopPriority] cooppriority, [2LT_Priority] priority WHERE m.CoopName_ID = coop.CoopName_ID AND m.FieldName_ID = field.FieldName_ID AND m.LinesOperationCenter_ID = lines.LinesOperationCenter_ID AND m.ProvincialLineZone_ID = provincial.ProvincialLineZone_ID AND m.StationType_ID = stationtype.StationType_ID AND m.Status_ID = status.Status_ID AND m.CoopPriority_ID = cooppriority.CoopPriority_ID AND m.Priority_ID = priority.Priority_ID"
Dim da As New System.Data.SqlClient.SqlDataAdapter(sSQL, myConnection)
da.Fill(ds)
Dim rowcount As Integer = ds.Tables.Item(0).Rows.Count
MessageBox.Show(ds.Tables.Item(0).Rows.Count)
'now, for the display, we need to use the datareader
Dim command As New SqlCommand(sSQL, objConnection)
objConnection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
MainForm.Cursor = Cursors.WaitCursor
MainForm.ProgressBar1.Value = 0
MainForm.ProgressBar1.Visible = True
MainForm.lblProgress.Visible = True
MainForm.ProgressBar1.Maximum = rowcount
'set up excel page
With oPageSetup
.CenterHeader = "&""Arial,Bold""&16User Table List " & Chr(10)
.PrintTitleRows = "$1:$5"
.CenterFooter = "Page &P of &N"
.RightFooter = "&8" & Format(Now, "Long Date") & vbCr & "AUP.NET Ver. " & My.Application.Info.Version.Major & "." & My.Application.Info.Version.Minor
.FooterMargin = objExcel.InchesToPoints(0.35)
.HeaderMargin = objExcel.InchesToPoints(0.35)
.LeftMargin = objExcel.InchesToPoints(0.75)
.RightMargin = objExcel.InchesToPoints(0.75)
.TopMargin = objExcel.InchesToPoints(1.0#)
.BottomMargin = objExcel.InchesToPoints(0.75)
.FitToPagesWide = 1
.FitToPagesTall = 10
.Zoom = False
End With
'Set column titles
shWorkSheet.Range("A1").Value = "......"
shWorkSheet.Range("B1").Value = "......"
shWorkSheet.Range("C1").Value = "......"
shWorkSheet.Range("D1").Value = "......"
shWorkSheet.Range("E1").Value = "......"
shWorkSheet.Range("F1").Value = "......"
shWorkSheet.Range("G1").Value = "......"
shWorkSheet.Range("H1").Value = "......"
shWorkSheet.Range("I1").Value = "......"
shWorkSheet.Range("J1").Value = "......"
shWorkSheet.Range("K1").Value = "......"
shWorkSheet.Range("L1").Value = "......"
shWorkSheet.Range("M1").Value = "......"
shWorkSheet.Range("N1").Value = "......"
shWorkSheet.Range("O1").Value = "......"
shWorkSheet.Range("P1").Value = "......"
shWorkSheet.Range("Q1").Value = "......"
shWorkSheet.Range("R1").Value = "......"
shWorkSheet.Range("S1").Value = "......"
shWorkSheet.Range("T1").Value = "......"
shWorkSheet.Range("U1").Value = "......"
shWorkSheet.Range("V1").Value = "......"
'Set the headings cell color
shWorkSheet.Range("A1:V1").Interior.ColorIndex = 3
'Set row/column features'
shWorkSheet.Range("A1:V1").Font.Bold = True
shWorkSheet.Range("A1:V1").Font.Italic = True
shWorkSheet.Range("A1:V1").Font.Size = 12
'Set column width
shWorkSheet.Range("A1:V1").EntireColumn.ColumnWidth = 28
shWorkSheet.Range("A1:V1").WrapText = True
'Select column position
oRange.VerticalAlignment = Excel.Constants.xlTop
shWorkSheet.Range("A1:V1").HorizontalAlignment = Excel.Constants.xlCenter
'Select the start position for the first record
rngRowStart = shWorkSheet.Range("A1")
'reads all the information from the database. the columns are in sequence with the query above
While reader.Read()
For i = 0 To 2
rngRowStart.Offset(1, 0).Value = reader.GetString(0)
rngRowStart.Offset(1, 1).Value = reader.GetString(1)
rngRowStart.Offset(1, 2).Value = reader.GetString(2)
rngRowStart.Offset(1, 3).Value = reader.GetString(3)
rngRowStart.Offset(1, 4).Value = reader.GetString(4)
rngRowStart.Offset(1, 5).Value = reader.GetString(5)
rngRowStart.Offset(1, 6).Value = reader.GetString(6)
rngRowStart.Offset(1, 7).Value = reader.GetInt32(7)
rngRowStart.Offset(1, 8).Value = reader.GetInt32(8)
rngRowStart.Offset(1, 9).Value = reader.GetString(9)
rngRowStart.Offset(1, 10).Value = reader.GetValue(10)
rngRowStart.Offset(1, 11).Value = reader.GetValue(11)
rngRowStart.Offset(1, 12).Value = reader.GetValue(12)
rngRowStart.Offset(1, 13).Value = reader.GetValue(13)
rngRowStart.Offset(1, 14).Value = reader.GetValue(14)
rngRowStart.Offset(1, 15).Value = reader.GetValue(15)
rngRowStart.Offset(1, 16).Value = reader.GetValue(16)
rngRowStart.Offset(1, 17).Value = reader.GetValue(17)
rngRowStart.Offset(1, 18).Value = reader.GetValue(18)
rngRowStart.Offset(1, 19).Value = reader.GetValue(19)
rngRowStart.Offset(1, 20).Value = reader.GetValue(20)
rngRowStart.Offset(1, 21).Value = reader.GetValue(21)
Next
'sets up the progress bar
MainForm.ProgressBar1.Value = MainForm.ProgressBar1.Value + 1
System.Windows.Forms.Application.DoEvents()
MainForm.lblProgress.Text = Int((MainForm.ProgressBar1.Value / MainForm.ProgressBar1.Maximum) * 100) & "% Complete"
rngRowStart = rngRowStart.Offset(1, 0)
End While
oRange = DirectCast(shWorkSheet.Columns("C:C"), Excel.Range)
oRange.ColumnWidth = 15
oRange = DirectCast(shWorkSheet.Columns("F:F"), Excel.Range)
oRange.ColumnWidth = 15
reader.Close()
da.Dispose()
MainForm.Cursor = Cursors.Default
objExcel.Visible = True
MainForm.ProgressBar1.Value = 0
MainForm.ProgressBar1.Visible = False
MainForm.lblProgress.Text = vbNullString
MainForm.lblProgress.Visible = False
objConnection.Close()
If Not Directory.Exists(path & "/Reports") Then
Directory.CreateDirectory(path & "/Reports")
End If
End Sub
End Class
Im not even totally sure if its the code but any suggestions would help!
And, im pretty sure its not the query because this DID work before.
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|