Utskrift i Word

Göra beräkningar på data

Till slut kanske vi vill skriva ut ett sökresultat eller ett beräkningsresultat i en rapport i Word.

Först måste vi lägga till en referens till Word genom att klicka på Project - Add Referene. I fönstret som visas klickar vi på fliken COM och markerar Microsoft Word X Object Library där X beror på vilken version av Word som är installerad. Klicka på Select och OK.

Sedan skall vi göra några nya dimensioneringar:

Dim Word As New Word.Application()
Dim Doc As New Word.Document()

I knappen skriver vi också några rader överst:

Word = CType(CreateObject("word.application"), Word.Application)
Doc = CType(CreateObject("word.document"), Word.Document)
Doc = Word.Documents.Add

När vi vill skriva något till Word gör vi det med raden:

Word.Selection.TypeText("RESULTAT AV SÖKNINGEN ")

Det här blir en överskrift där det står RESULTAT AV SÖKNINGEN

Nu vill vi ha en radmantning:

Word.Selection.TypeText(vbCrLf)

Detta skriver vi före slingan For Each.

Inne i slingan For Each kan vi skriva det som finns i varje rad i vårt DataSet när slingan gås igenom.

Word.Selection.TypeText(odjDR("Namn").ToString & " " & odjDR("Vara").ToString & " " & odjDR("Pris").ToString)

Det här blir först namnet på kunden, sedan ett mellanslag, därefter varans namn, ett nytt mellanslag och sist varans pris. Allt på en rad. Därefter en radmatning:

Word.Selection.TypeText(vbCrLf)

Utanför slingan kan vi skriva resultatet av summeringen för vad varje kund handlat för i stället för att visa det i en MsgBox.

Word.Selection.TypeText(vbCrLf)
Word.Selection.TypeText("-----------------------------")
Word.Selection.TypeText(vbCrLf)
Word.Selection.TypeText("Kalle har handlat för :" & Kalle)
Word.Selection.TypeText(vbCrLf)
Word.Selection.TypeText("Pelle har handlat för :" & Pelle)
Word.Selection.TypeText(vbCrLf)
Word.Selection.TypeText("Olle har handlat för :" & Olle)

Hela programmet ser nu ut så här:

Dim Connection As String
Dim Sql As String
Dim objDS As New DataSet()
Dim objTable As DataTable
Dim varKund, varOrt, varVara As String
Dim odjDR As DataRow
Dim Kalle, Pelle, Olle As Single
Dim Word As New Word.Application()
Dim Doc As New Word.Document()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Word = CType(CreateObject("word.application"), Word.Application)
Doc = CType(CreateObject("word.document"), Word.Document)
Doc = Word.Documents.Add
objDS.Tables.Clear()
Sql = "SELECT Kunder.*, Varor.Vara, Varor.Pris FROM Kunder, Leverans, Varor WHERE Leverans.KundID=Kunder.KundID AND Leverans.VaruID=Varor.VaruID ORDER BY Kunder.Namn"
Connection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\VB.Net skola\sql\handel.mdb"
Dim objConn As New OleDb.OleDbConnection(Connection)
Dim objDataAdapter As New OleDb.OleDbDataAdapter(Sql, objConn)
objConn.Open()
objDataAdapter.Fill(objDS, "resultat")
objConn.Close()
objTable = objDS.Tables("resultat")
DataGrid1.DataSource = objDS.Tables("resultat")
Word.Selection.TypeText("RESULTAT AV SÖKNINGEN ")
Word.Selection.TypeText(vbCrLf)
For Each odjDR In objTable.Rows
   If Not odjDR.IsNull("Namn") Then
      Select Case odjDR("Namn").ToString
         Case "Kalle"
         Kalle += odjDR("Pris").ToString
      Case "Pelle"
         Pelle += odjDR("Pris").ToString
      Case "Olle"
      End Select
End If
Word.Selection.TypeText(odjDR("Namn").ToString & " " & odjDR("Vara").ToString & " " & odjDR("Pris").ToString)
Word.Selection.TypeText(vbCrLf)
Next
Word.Selection.TypeText(vbCrLf)
Word.Selection.TypeText("-----------------------------")
Word.Selection.TypeText(vbCrLf)
Word.Selection.TypeText("Kalle har handlat för :" & Kalle)
Word.Selection.TypeText(vbCrLf)
Word.Selection.TypeText("Pelle har handlat för :" & Pelle)
Word.Selection.TypeText(vbCrLf)
Word.Selection.TypeText("Olle har handlat för :" & Olle)
Doc.Application.Visible = True
End Sub

Göra beräkningar på data

SupportData.Net
©