display pdf winform c# : Rotate pages in pdf online software SDK cloud windows wpf winforms class 7053154973-Excel%202007%20VBA%20Programmers%20Reference%20-%20Wrox%20200749-part676

For this example, create a simple stored procedure that you can use to insert new records into the
Shipperstable:
CREATE PROC spInsertShippers
@CompanyName  nvarchar(40),
@Phone        nvarchar(24)
AS
INSERT INTO Shippers(CompanyName, Phone)
VALUES(@CompanyName, @Phone)
RETURN @@IDENTITY
As you can see, the stored procedure has two arguments, @CompanyName and @Phone, which are used to
collect the values to insert into those respective fields in the Shippers table. Similar to the ID field in the
Access version of the Northwind database, the ShipperID field in the SQL Server version of Northwind
is populated automatically by the database any time a new record is inserted. You retrieve this automati-
cally assigned value in a similar fashion, through the use of SQL Server’s @@IDENTITY system function.
In this case, however, you won’t have to make a separate query to retrieve the Shipper ID value because
it will be returned to you by the stored procedure.
To present a more realistic application scenario, the following example uses publicly scoped Connection
and Command objects, procedures to create and destroy the connection, a procedure to prepare the Command
object for use, and a procedure that demonstrates how to use the Commandobject:
Public Const gszCONNECTION As String = _
“Provider=SQLOLEDB;Data Source=P2800\P2800;” & _
“Initial Catalog=Northwind;Integrated Security=SSPI”
Public gobjCmd As ADODB.Command
Public gobjConn As ADODB.Connection
Private Sub CreateConnection()
‘ Create the Connection object.
Set gobjConn = New ADODB.Connection
gobjConn.Open gszCONNECTION
End Sub
Private Sub DestroyConnection()
‘ Check to see if connection is still open before attempting to close it.
If CBool(gobjConn.State And adStateOpen) Then gobjConn.Close
Set gobjConn = Nothing
End Sub
Private Sub PrepareCommandObject()
‘ Create the Command object.
Set gobjCmd = New ADODB.Command
Set gobjCmd.ActiveConnection = gobjConn
gobjCmd.CommandText = “spInsertShippers”
gobjCmd.CommandType = adCmdStoredProc
‘ Load the parameters collection. The first parameter
‘ is always the stored procedure return value.
gobjCmd.Parameters.Append _
458
Chapter 20: Data Access with ADO
Rotate pages in pdf online - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
rotate pdf page; rotate a pdf page
Rotate pages in pdf online - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
how to rotate a page in pdf and save it; rotate all pages in pdf preview
gobjCmd.CreateParameter(“@RETURN_VALUE”, adInteger, _
adParamReturnValue, 0)
gobjCmd.Parameters.Append _
gobjCmd.CreateParameter(“@CompanyName”, adVarWChar, _
adParamInput, 40)
gobjCmd.Parameters.Append _
gobjCmd.CreateParameter(“@Phone”, adVarWChar, _
adParamInput, 24)
End Sub
Public Sub UseCommandObject()
Dim lKeyValue As Long
Dim lNumAffected As Long
On Error GoTo ErrorHandler
‘ Create the Connection and the reusable Command object.
CreateConnection
PrepareCommandObject
‘ Set the values of the input parameters.
gobjCmd.Parameters(“@CompanyName”).Value = “Air Carriers”
gobjCmd.Parameters(“@Phone”).Value = “(206) 555-1212”
‘ Execute the Command object and check for errors.
gobjCmd.Execute Recordsaffected:=lNumAffected, _
Options:=adExecuteNoRecords
If lNumAffected <> 1 Then Err.Raise Number:=vbObjectError + 1024, _
Description:=”Error executing Command object.”
‘ Retrieve the primary key value for the new record.
lKeyValue = gobjCmd.Parameters(“@RETURN_VALUE”).Value
Debug.Print “The key value of the new record is: “ & CStr(lKeyValue)
ErrorExit:
‘ Destroy the Command and Connection objects.
Set gobjCmd = Nothing
DestroyConnection
Exit Sub
ErrorHandler:
MsgBox Err.Description, vbCritical
Resume ErrorExit
End Sub
Afew things to note about the mini application:
In a normal application, you would not create and destroy the Connectionand Command objects
in the UseCommandObjectprocedure. These objects are intended for reuse and therefore typically
would be created when your application first started and destroyed just before it ended.
459
Chapter 20: Data Access with ADO
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Enable specified pages deleting from PDF in Visual Basic .NET class. Free trial SDK library download for Visual Studio .NET program. Online source codes for
rotate single page in pdf; how to rotate all pages in pdf in preview
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
add and insert one or multiple pages to existing adobe PDF document in VB.NET. Ability to create a blank PDF page with related by using following online VB.NET
rotate pdf pages by degrees; how to rotate one pdf page
When constructing and using the Command object’s Parameters collection, keep in mind that
the first parameter is always reserved for the stored procedure return value, even if the stored
procedure doesn’t have a return value.
Even though you didn’t make any particular use of the Shipper ID value returned from the stored
procedure for the new record, in a normal application this value would be very important. The
CompanyNameand Phonefields are for human consumption; the primary key value is how the
database identifies the record. For example, in the Northwind database, the Shipper ID is a
required field for entering new records into the Orders table. Therefore, if you planned on add-
ing an order that was going to use the new shipper, you would have to know the Shipper ID.
Multiple Recordsets
The SQL Server OLE DB provider is an example of a provider that allows you to execute a SQLstate-
ment that returns multiple recordsets. This feature comes in very handy when you need to populate
multiple controls on a form with lookup-table information from the database. You can combine all of the
lookup-table SELECT queries into a single stored procedure and then loop through the individual record-
sets, assigning their contents to the corresponding controls.
For example, if you needed to create a user interface for entering information into the Orders table, you
would need information from several related tables, including Customers and Shippers, as shown in
Figure 20-6.
Figure 20-6
Create an abbreviated example of a stored procedure that returns the lookup information from these two
tables, and then use the result to populate drop-downs on a UserForm:
CREATE PROC spGetLookupValues
AS
-- Customers lookup table info.
SELECT    CustomerID,
CompanyName
FROM      Customers
-- Shippers lookup table info.
SELECT    ShipperID,
CompanyName
FROM      Shippers
Note that this stored procedure contains two separate SELECT statements. These will populate two inde-
pendent recordsets when the stored procedure is executed using ADO. The double dashes that you see
at the beginning of the lines above each SELECTstatement are T-SQL comment prefixes.
460
Chapter 20: Data Access with ADO
C# PDF Page Insert Library: insert pages into PDF file in C#.net
to merge PDF document files by C# code, how to rotate PDF document page to delete PDF page using C# .NET, how to reorganize PDF document pages and how
how to reverse page order in pdf; pdf rotate pages and save
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
pdf expert rotate page; rotate pdf page by page
The following procedure is an example of a UserForm_Initialize event that populates drop-downs
on the UserForm with the results of the spGetLookupValuesstored procedure. For the purpose of this
example, assume that the public Connection object gobjConn used in the previous example is still open
and available for use:
Private Sub UserForm_Initialize()
Dim rsData As ADODB.Recordset
‘ Create and open the Recordset object.
Set rsData = New ADODB.Recordset
rsData.Open “spGetLookupValues”, gobjConn, _
adOpenForwardOnly, adLockReadOnly, adCmdStoredProc
‘ The first recordset contains the customer list.
Do While Not rsData.EOF
‘ Load the dropdown with the recordset values.
ddCustomers.AddItem rsData.Fields(1).Value
rsData.MoveNext
Loop
Set rsData = rsData.NextRecordset
‘ The second recordset contains the shippers list.
Do While Not rsData.EOF
‘ Load the dropdown with the recordset values.
ddShippers.AddItem rsData.Fields(1).Value
rsData.MoveNext
Loop
Set rsData = rsData.NextRecordset
‘ No need to clean up the Recordset object at this point,
‘ it will be closed and set to nothing after the last
‘ call to the NextRecordset method.
End Sub
One thing to note about the method demonstrated here is that it requires prior knowledge of the number
and order of recordsets returned by the call to the stored procedure. Also left out is any handling of the
primary key values associated with the lookup table descriptions. In a real-world application, you
would need to maintain these keys (I prefer using a hidden column in a multi-column drop-down for
this purpose) so you could retrieve the primary key value that corresponded to the user’s selection in
each drop-down.
Disconnected Recordsets
The “Retrieving Data from Microsoft Access Using a Plain Text Query” section mentioned that getting in
and out of the database as quickly as possible was an important goal. However, the Recordset object is
a powerful tool that you would often like to hold onto and use without locking other users out of the
database. The solution to this problem is the ADO disconnected recordset feature.
Adisconnected recordset is a Recordset object whose connection to its data source has been severed,
but that can still remain open. The result is a fully functional Recordset object that does not hold any
locks in the database from which it was queried. Disconnected recordsets can remain open as long as
461
Chapter 20: Data Access with ADO
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Free online C# class source code for deleting specified PDF pages in .NET console application. Able to remove a single page from PDF document.
change orientation of pdf page; rotate individual pages in pdf
VB.NET PDF - WPF PDF Viewer for VB.NET Program
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
rotate pdf pages individually; pdf rotate page and save
you need them, they can be reconnected to and resynchronized with the data source, and they can even
be persisted to disk for later retrieval. Afew of these capabilities are examined in the following example.
Imagine you wanted to implement a feature that would allow users to view any group of customers
they chose. Running a query against the database each time the user specified a different criterion would
be an inefficient way to accomplish this. A much better alternative would be to query the complete set of
customers from the database and hold them in a disconnected recordset. You could then use the Filter
property of the Recordsetobject to quickly extract the set of customers that your user requested.
The following example shows all of the elements required to create a disconnected recordset. Again,
assume the availability of the public gobjConnConnection object:
Public grsData As ADODB.Recordset
Public Sub CreateDisconnectedRecordset ()
Dim szSQL As String
‘ Create the SQL Statement.
szSQL = “SELECT CustomerID, CompanyName, ContactName, Country “ & _
“FROM Customers”
‘ Steps to creating a disconnected recordset:
‘ 1) Create the Recordset object.
Set grsData = New ADODB.Recordset
‘ 2) Set the cursor location to client side.
grsData.CursorLocation = adUseClient
‘ 3) Set the cursor type to static.
grsData.CursorType = adOpenStatic
‘ 4) Set the lock type to batch optimistic.
grsData.LockType = adLockBatchOptimistic
‘ 5) Open the recordset.
grsData.Open szSQL, gobjConn, , , adCmdText
‘ 6) Set the Recordset’s Connection object to Nothing.
Set grsData.ActiveConnection = Nothing
‘ grsData is now a disconnected recordset.
Sheet1.Range(“A1”).CopyFromRecordset grsData
End Sub
Note that the Recordset object variable in the preceding example is declared with public scope. If you
were to declare the Recordset object variable at the procedure level, VBA would automatically destroy
it when the procedure ended and it would no longer be available for use.
Six crucial steps are required to successfully create a disconnected recordset. It’s possible to combine sev-
eral of them into one step during the Recordset.Open method, and it’s more efficient to do so, but they
are separated here for the sake of clarity:
You must create a new, empty Recordsetobject to start with.
You must set the cursor location to client-side. Because the recordset will be disconnected from
the server, the cursor cannot be managed there. Note that this setting must be made before you
open the recordset. It is not possible to change the cursor location once the recordset is open.
462
Chapter 20: Data Access with ADO
VB.NET PDF - Create PDF Online with VB.NET HTML5 PDF Viewer
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
pdf rotate just one page; rotate individual pdf pages reader
C# HTML5 PDF Viewer SDK to create PDF document from other file
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET read barcodes from PDF, C#.NET OCR scan PDF. C# ASP.NET Document Viewer, C# Online Dicom Viewer
pdf reverse page order online; rotate pdf pages and save
The ADO client-side cursor engine supports only one type of cursor, the static cursor, so this is
what the CursorType property must be set to.
ADO has a lock type specifically designed for disconnected recordsets called Batch Optimistic. 
The Batch Optimistic lock type makes it possible to reconnect the disconnected recordset to the
database and update the database with records that have been modified while the recordset was
disconnected. This operation is beyond the scope of this chapter, so note that the Batch Optimistic
lock type is required in order to create a disconnected recordset.
Opening the recordset is the next step. This example used a plain text SQL query. This is not a
requirement. You can create a disconnected recordset from almost any source that can be used to
create a standard recordset. The client-side cursor engine lacks a few capabilities, however; mul-
tiple recordsets are one example.
The final step is disconnecting the recordset from the data source. This is accomplished by set-
ting the recordset’s Connection object to Nothing. If you recall from the “Recordset Object
Properties” section, the Connection object associated with a Recordset object is accessed
through the Recordset.ActiveConnection property. Setting this property to Nothing severs
the connection between the recordset and the data source.
Now that you have a disconnected recordset to work with, what kinds of things can you do with it? Just
about any operation the Recordset object allows. Say that the user wanted to see a list of customers
located in Germany, sorted by alphabetical order. This is how you’d accomplish that task:
‘ Set the Recordset filter to display only records 
‘ whose Country field is Germany.
grsData.Filter = “Country = ‘Germany’”
‘ Sort the records by CompanyName.
grsData.Sort = “CompanyName”
‘ Load the processed data onto Sheet1
Sheet1.Range(“A1”).CopyFromRecordset grsData
If you are working in a busy multi-user environment, the data in your disconnected recordset may become
out-of-date during the course of your application due to other users inserting, updating, and deleting
records. You can solve this problem by requerying the recordset. As demonstrated by the following exam-
ple, this is a simple matter of reconnecting to the data source, executing the Recordset.Requery method,
then disconnecting from the data source:
‘ Reconnect to the data source.
Set grsData.ActiveConnection = gobjConn
‘ Rerun the Recordset object’s underlying query,
grsData.Requery Options:=adCmdText
‘ Disconnect from the data source.
Set grsData.ActiveConnection = Nothing
Using ADO with Non-Standard Data Sources
This section describes how you can use ADO to access data from two common non-standard data sources
(data sources that are not strictly considered databases), Excel workbooks, and text files. Although the idea
may seem somewhat counterintuitive, ADO is often the best choice for retrieving data from workbooks
and text files because it eliminates the often lengthy process of opening them in Excel. Using ADO also
allows you to take advantage of the power of SQLto do exactly what you want in the process.
463
Chapter 20: Data Access with ADO
Querying Microsoft Excel Workbooks
When using ADO to access data from Excel 2007 workbooks, you use the same OLE DB provider that
you used earlier in this chapter to access data from Microsoft Access 2007. In addition to Access, this
provider also supports most ISAM data sources (data sources that are laid out in a tabular, row and col-
umn format). You will use the Sales.xlsx workbook, shown in Figure 20-7, as the data source for the
Excel examples.
Figure 20-7
When using ADO to work with Excel, the workbook file takes the place of the database, while work-
sheets within the workbook, as well as named ranges, serve as tables. Compare a connection string used
to connect to an Access database with a connection string used to connect to an Excel workbook.
Connection string to an Access database:
sConnect = “Provider=Microsoft.ACE.OLEDB.12.0;” & _
“Data Source=C:\Files\Northwind 2007.accdb;”
Connection string to an Excel workbook:
sConnect = “Provider=Microsoft.ACE.OLEDB.12.0;” & _
“Data Source=C:\Files\Sales.xlsx;” & _
“Extended Properties=Excel 12.0;”
Note that the same provider is used, and that the full path and filename of the Excel workbook takes the
place of the full path and filename of the Access database. The only difference is that you must specify
the type name of the data source you want to connect to in the ExtendedProperties argument. When
connecting to Excel 2007, you set the ExtendedProperties argument to Excel12.0. For versions of
Excel earlier than 2007, you set the ExtendedProperties argument to Excel8.0.
You query data from an Excel worksheet using a plain text SQL statement exactly like you would query
a database table. However, the format of the table name is different for Excel queries. You can specify the
table that you want to query from an Excel workbook in one of four different ways:
464
Chapter 20: Data Access with ADO
Worksheet Name Alone —When using the name of a specific worksheet as the table name in
your SQL statement, the worksheet name must be suffixed with a $character and surrounded
with square brackets. For example, [Sheet1$] is a valid worksheet table name. If the worksheet
name contains spaces or non-alphanumeric characters, you must surround it with single quotes.
An example of this is [‘MySheet$’].
Worksheet-level Range Name —You can use a worksheet-level range name as a table name in
your SQL statement. Simply prefix the range name with the worksheet name it belongs to, using
the formatting conventions just described. An example of this would be
[Sheet1$SheetLevelName].
Specific Range Address—You can specify the table in your SQL statement as a specific range
address on the target worksheet. The syntax for this method is identical to that for a worksheet-
level range name: [Sheet1$A1:E20].
Workbook-level Range Name —You can also use a workbook-level range name as the table in
your SQL statement. In this case there is no special formatting required. You simply use the
name directly, without brackets.
Although your sample workbook contains only one worksheet, this is not a requirement. The target
workbook can contain as many worksheets and named ranges as you wish. You simply need to know
which one to use in your query. The following procedure demonstrates all four table-specifying methods
just discussed:
Public Sub QueryWorksheet()
Dim rsData As ADODB.Recordset
Dim sConnect As String
Dim sSQL As String
‘ Create the connection string.
sConnect = “Provider=Microsoft.ACE.OLEDB.12.0;” & _
“Data Source=C:\Files\Sales.xlsx;” & _
“Extended Properties=Excel 12.0;”
‘ Query based on the worksheet name.
‘sSQL = “SELECT * FROM [Sales$]”
‘ Query based on a sheet-level range name.
‘sSQL = “SELECT * FROM [Sales$SheetLevelName];”
‘ Query based on a specific range address.
‘sSQL = “SELECT * FROM [Sales$A1:E89];”
‘ Query based on a book-level range name.
sSQL = “SELECT * FROM BookLevelName;”
Set rsData = New ADODB.Recordset
rsData.Open sSQL, sConnect, adOpenForwardOnly, _
adLockReadOnly, adCmdText
‘ Check to make sure we received data.
If Not rsData.EOF Then
Sheet1.Range(“A1”).CopyFromRecordset rsData
Else
MsgBox “No records returned.”, vbCritical
465
Chapter 20: Data Access with ADO
End If
‘ Clean up our Recordset object.
rsData.Close
Set rsData = Nothing
End Sub
By default, the OLE DB provider for Microsoft Jet assumes that the first row in the table you specify with
your SQL statement contains the field names for the data. If this is the case, you can perform more com-
plex SQL queries, making use of the WHEREand ORDERBYclauses. If the first row of your data table does
not contain field names, however, you must inform the provider of this fact or you will lose the first row
of data. The way to accomplish this is by providing an additional setting, HDR=No, to the Extended
Propertiesargument of the connection string:
sConnect = “Provider=Microsoft.ACE.OLEDB.12.0;” & _
“Data Source=C:\Files\Sales.xlsx;” & _
“Extended Properties=””Excel 12.0;HDR=No””;”
Note that when you pass multiple settings to the ExtendedProperties argument, the entire setting
string must be surrounded with double quotes and the individual settings must be delimited with semi-
colons. If your data table does not include column headers, you will be limited to SELECT queries.
Inserting and Updating Records in Microsoft Excel Workbooks
ADO can do more than just query data from an Excel workbook. You can also insert and update records
in the workbook, just as you would with any other data source. Deleting records, however, is not sup-
ported. Updating records, although possible, is somewhat problematic when an Excel workbook is the
data source, because Excel-based data tables rarely have anything that can be used as a primary key to
uniquely identify a specific record. Therefore, you must specify the values of enough fields to uniquely
identify the record concerned in the WHERE clause of your SQL statement when performing an update. If
more than one record meets WHERE clause criteria, all such records will be updated.
Inserting is significantly less troublesome. All you do is construct a SQL statement that specifies values
for each of the fields, and then execute it. Note once again that your data table must have column head-
ers in order for it to be possible to execute action queries against it. The following example demonstrates
how to insert a new record into the sales worksheet data table:
Public Sub WorksheetInsert()
Dim objConn As ADODB.Connection
Dim sConnect As String
Dim sSQL As String
‘ Create the connection string.
sConnect = “Provider=Microsoft.ACE.OLEDB.12.0;” & _
“Data Source=C:\Files\Sales.xlsx;” & _
“Extended Properties=Excel 12.0;”
‘ Create the SQL statement.
sSQL = “INSERT INTO [Sales$] “ & _
466
Chapter 20: Data Access with ADO
“VALUES(‘VA’, ‘On-Line’, ‘Computers’, ‘Mid’, 30);”
‘ Create and open the Connection object.
Set objConn = New ADODB.Connection
objConn.Open sConnect
‘ Execute the insert statement.
objConn.Execute sSQL, , adCmdText Or adExecuteNoRecords
‘ Close and destroy the Connection object.
objConn.Close
Set objConn = Nothing
End Sub
Note that if you use ADO to insert a new record into an Excel worksheet, and you use a range name as
the table in the INSERT statement, that range name will not be extended to include the new record.
Therefore, you should only use ADO to insert records into worksheets in situations where the worksheet
name can be used as the table in the INSERT statement.
Querying Text Files
The last data access technique to discuss in this chapter is querying text files using ADO. The need to
query text files doesn’t come up as often as some of the other situations addressed in this chapter.
However, when you’re faced with an extremely large text file, the result of a mainframe database data
dump, for example, ADO can be a lifesaver.
Not only will it allow you to rapidly load large amounts of data into Excel, but using the power of SQL
to limit the size of the resultset can also enable you to work with data from a text file that is simply too
large to be opened directly in Excel. For the discussion on text file data access, use a comma-delimited
text file, Sales.csv, whose contents are identical to the Sales.xlsx workbook used in the Excel exam-
ples in the previous section. The following example demonstrates how to construct a connection string
to access a text file:
szConnect = “Provider=Microsoft.ACE.OLEDB.12.0;” & _
“Data Source=C:\Files\;” & _
“Extended Properties=Text;”
Note that in the case of text files, the DataSource argument is set to the directory that contains the text
file. Do not include the name of the file in this argument. Once again, the provider is informed of the for-
mat to be queried by using the ExtendedProperties argument. In this case, you simply set this argu-
ment to the value “Text”.
Querying a text file is virtually identical to querying an Excel workbook. The main difference is how the
table name is specified in the SQLstatement. When querying a text file, the filename itself is used as the
table name in the query. This has the added benefit of allowing you to work with multiple text files in a
single directory without having to modify your connection string.
As with Excel, you are limited to SELECT queries if the first row of your text file does not contain field
names. You must also add the HDR=No setting to the ExtendedProperties argument if this is the case,
in order to avoid losing the first row of data. The example text file has field names in the first row, and
467
Chapter 20: Data Access with ADO
Documents you may be interested
Documents you may be interested