GUI Innovations for Innovative Solutions

SqlLinkCE - Code

The sample code below shows how to connect, import a list of ODBC sources, open a database and select from a table. SqlLinkCE functions are in BOLD

Imports SqlLinkCe
Imports System.runtime.InteropServices

Public Class frmTestSqlLinkCe
Inherits System.Windows.Forms.Form
Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu
Private sqlLink As New GUI_SqlLinkCe
Const LVM_SETCOLUMNWIDTH = &H101E

Declare Function SendMessage Lib "Coredll" Alias "SendMessageW" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer

<DllImport("Coredll")> _
Private Function GetFocus() As Integer
End Function


#Region " Windows Form Designer generated code "
#End Region


Private Sub cmdConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdConnect.Click
sqlLink.Remote_Port = txtPort.Text
sqlLink.Host = txtHost.Text
Dim Iret As Integer
If Not sqlLink.Connect_To_Server() = 0 Then
MsgBox(sqlLink.Error_Message)
Else
MsgBox("Connected to SqlLinkCE server")
End If

End Sub

Private Sub cmdODBC_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdODBC.Click
If sqlLink.Get_ODBC_List() = 0 Then
Dim ict As Integer
For ict = 1 To sqlLink.Connections.Count
cmbBases.Items.Add(sqlLink.Connections(ict).ToString)
Next
End If
End Sub

Private Sub cmdOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpen.Click
sqlLink.Connection_String = "Provider=MSDASQL;DSN=" & cmbBases.Text
sqlLink.Database_Password = ""
sqlLink.Database_USer = "sa"
If sqlLink.Open_Database <> 0 Then
MsgBox(sqlLink.Error_Message)
Else
MsgBox("Opened OK!")
End If

End Sub

Private Sub cmdExec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExec.Click
Dim bLVInit As Boolean
Dim lvi As ListViewItem
Dim Ict As Integer
Dim lvh As ListView.ColumnHeaderCollection
sqlLink.Sql = txtSql.Text
sqlLink.Execute_Query()

lvRecords.BeginUpdate()
While Not sqlLink.EOF
If Not bLVInit Then
lvRecords.Items.Clear()
For Ict = lvRecords.Columns.Count To 1 Step -1
lvRecords.Columns.Remove(lvRecords.Columns(Ict - 1))
Next
For Ict = 1 To sqlLink.Field_Name.Count
lvRecords.Columns.Add(sqlLink.Field_Name(Ict).ToString, -2, HorizontalAlignment.Left)
Next
bLVInit = True
End If
For Ict = 1 To sqlLink.Field_Value.Count
If Ict = 1 Then
lvi = New ListViewItem
lvi.Text = (sqlLink.Field_Value(1).ToString)
Else
lvi.SubItems.Add(sqlLink.Field_Value(Ict).ToString)
End If

Next
lvRecords.Items.Add(lvi)
lvi = Nothing
sqlLink.MoveNext()
End While
Autosize_Listview(lvRecords, lvRecords.Columns.Count)
lvRecords.EndUpdate()
End Sub

Public Sub Autosize_Listview(ByVal lv As ListView, ByVal Cols As Integer)

lv.Focus()

Dim WkCols As Integer
If Cols = 0 Then
WkCols = lv.Columns.Count - 1
Else
WkCols = Cols - 1
End If
Dim col2adjust As Integer
For col2adjust = 0 To WkCols
Call SendMessage(GetFocus(), _
LVM_SETCOLUMNWIDTH, _
col2adjust, _
-2)
Next
For col2adjust = WkCols + 1 To lv.Columns.Count - 1
lv.Columns(col2adjust).Width = 0
Next

End Sub

End Class