Tricks for Paging and Row Offset in Various Versions of SQL Server

0 comments
Paging is one of the most needed tasks when developers are developing applications. SQL Server has introduced various features of SQL Server 2000 to the latest version of SQL Server 2012. Here is the blog post which I wrote which demonstrates how SQL Server Row Offset and Paging works in various versions of the SQL Server. Instead of giving the generic algorithm, I have used AdventureWorks database and build a script. This will give you better control over your data if you have installed the AdventureWorks database and you can play around with various parameters. The goal is to retrieve row number 51 to 60 from the table Sales.SalesOrderDetails of database AdventureWorks.

Project - SMS Gateway Sederhana Dengan ActiveXpert

1 comments
Atas permintaan salah seorang teman baik saya untuk memberikan contoh tentang program SMS gateway, berikut contoh program SMS Gateway paling sederhana menggunakan ActiveXpert dan database SQL Server.

Silakan Download Disini



Semoga Bermanfaat

Runtime Error 430 - Class Does Not Support Automation or Does Not Support Expected Interface

0 comments
Compile project VB6 menggunakan Windows 7 SP1 kadang menimbulkan error saat dijalankan di Windows XP. Hal ini disebabkan karena ADODB di Windows 7 SP1 tidak compatible dengan Windows XP dan akan muncul "Runtime Error 430 - Class Does Not Support Automation or Does Not Support Expected Interface".

Untuk dapat meng-compile project VB6 di Windows 7, berikut langkah-langkahnya :
  • Buka Folder %ProgramFiles%\Common Files\System. Untuk Windows 64bit buka folder %ProgramFiles(x86)%\Common Files\System\
  • Set permission folder "ado\" menjadi owner dan permission menjadi read/write.
  • Buka folder "ado"
  • Rename file "msado27.tlb" menjadi "msado27_new.tlb"
  • Rename file "msado28.tlb" menjadi "msado28_new.tlb"
  • Cari file "msado27.tlb" dari komputer Windows 7 (Bukan SP1)  atau anda bisa dapatkan disini
  • Copy file "msado27.tlb" ke folder "ado\" di Windows 7 SP1
  • Duplikat file "msado27.tlb" dan rename menjadi "msado28.tlb"
  • Restart System

Ini sudah saya coba dan berhasil.
Semoga berguna...

Sumber

SQL Server Msg 15138 - The database principal owns a schema in the database, and schema cannot be dropped

0 comments
The error message of SQL Server is self explanatory as there were schema associated with the user and we have to transfer those schema before removing the User.
In this post I will explain the workaround for this error:

Lets assume I am trying to drop a user named “TestUser” from DemoDB database.
Now, run the below query in the database from which we are trying to drop the user.

Use DemoDB ;
SELECT s.name
FROM sys.schemas s
WHERE s.principal_id = USER_ID(‘TestUser’)

Functions for calculating the Min, Max and StdDev

0 comments
The following functions can be used to calculate the minimum, maximum and standard deviation of a list of arguments.

Option Explicit


'Purpose   :    Returns the Minimum value from a parameter Array
'Inputs    :    avValues() as Variant
'Outputs   :    The Min Value contained within the input (excluding empty values)

'Notes     :    Examples:
'               Min(1,2,empty,-1)               Returns -1
'               Min(Array(1,2,-1),-4,-9.9)      Returns -9.9
'               Min(1/Jan/99,2/Jan/99)          Returns 1/Jan/99
'Revisions :

Function Min(ParamArray avValues() As Variant) As Variant
    Dim vThisItem As Variant, vThisElement As Variant
    
    On Error Resume Next
    For Each vThisItem In avValues
        If IsArray(vThisItem) Then
            For Each vThisElement In vThisItem
                Min = Min(vThisElement, Min)
            Next
        Else
            If vThisItem < Min Then
                If Not IsEmpty(vThisItem) Then
                    Min = vThisItem
                End If
            ElseIf IsEmpty(Min) Then
                Min = vThisItem
            End If
        End If
    Next
    On Error GoTo 0
End Function

'Purpose   :    Returns the Maximum value from a parameter Array
'Inputs    :    avValues() as Variant
'Outputs   :    The Max Value contained within the input (excluding empty values)
'Notes     :    Examples:
'               Max(1,2,empty,-1)               Returns 2
'               Max(Array(1,2,-1),-4,-9.9)      Returns 2
'               Max(1/Jan/99,2/Jan/99)          Returns 2/Jan/99
'Revisions :

Function Max(ParamArray avValues() As Variant) As Variant
    Dim vThisItem As Variant, vThisElement As Variant
    
    On Error Resume Next
    For Each vThisItem In avValues
        If IsArray(vThisItem) Then
            For Each vThisElement In vThisItem
                Max = Max(vThisElement, Max)
            Next
        Else
            If vThisItem > Max Then
                If Not IsEmpty(vThisItem) Then
                    Max = vThisItem
                End If
            ElseIf IsEmpty(Max) Then
                Max = vThisItem
            End If
        End If
    Next
    On Error GoTo 0
End Function


'Purpose   :    Returns the Average of many things, they could be dates or numbers.
'Inputs    :    avValues                A 1D Array of Values to evaluate
'Outputs   :    The average value of the input parameters


Function Average(ParamArray avValues() As Variant) As Variant
    Dim vTotal As Variant, lThisItem As Variant, vThisElement As Variant, lItems As Long
    
    For Each lThisItem In avValues
        If IsArray(lThisItem) Then
            For Each vThisElement In lThisItem
                If Not IsEmpty(vThisElement) And IsNumeric(vThisElement) Then
                    vTotal = vTotal + vThisElement
                    lItems = lItems + 1
                End If
            Next
        ElseIf Not IsEmpty(lThisItem) And IsNumeric(lThisItem) Then
            vTotal = vTotal + lThisItem
            lItems = lItems + 1
        End If
    Next
    If lItems Then
        Average = vTotal / lItems
    End If
End Function

'Purpose   :    Calculate the Standard Devation of a population
'Inputs    :    avValues. A 1D Array of Values.
'               [avWeights]. A 1D Array of weights. If supplied the function
'               will calculated a weighted standard deviation.
'Outputs   :    The Standard Deviation or N/A if less than three values


Function StdDevP(avValues As Variant, Optional avWeights) As Variant
    Dim dThisWeight As Double, lThisItem As Long
    Dim dValue1 As Double, dValue2 As Double, dSumWeights As Double
    
    On Error GoTo ErrFailed
    If UBound(avValues) - LBound(avValues) >= 3 Then
        'Have more than three values
        dThisWeight = 1
        For lThisItem = LBound(avValues) To UBound(avValues)
            If IsArray(avWeights) Then
                dThisWeight = avWeights(lThisItem)
            End If
            dValue1 = dValue1 + (dThisWeight * avValues(lThisItem) * avValues(lThisItem))
            dSumWeights = dSumWeights + dThisWeight
            dValue2 = dValue2 + (dThisWeight * avValues(lThisItem))
        Next
        dValue1 = dValue1 / dSumWeights
        dValue2 = (dValue2 / dSumWeights) ^ 2
        'Abs prevents a run time if round errors occur
        'which make the number negative
        StdDevP = Abs(dValue1 - dValue2) ^ 0.5
    Else
        'Require three values
        StdDevP = "N/A"
    End If
    Exit Function
    
ErrFailed:
    Debug.Print "Error in StdDevP: " & Err.Description
    StdDevP = "N/A"
End Function

SUMBER

Recordset Sementara Dengan Desimal

0 comments
Membuat recordset sementara di visual basic 6 yang diharuskan memakai angka dibelakang koma/desimal (presisi).
Untuk menentukan jumlah koma/desimal harus menyertakan kode ini
    rs.Fields("Saldo").NumericScale = 2

Jika anda tidak menyertakan kode diatas, maka hanya nilai realnya aja yang diambil atau tanpa desimal.
Misalnya :
Rate = 7800,56 
maka nilai yang akan disimpan di recordset hanya 7800

Berikut contohnya :
Set rs = New ADODB.Recordset
With rs    
    .Fields.Append "Nomor", adBigInt, , adFldIsNullable
    .Fields.Append "Nama", adVarChar, 50, , adFldIsNullable
    .Fields.Append "Rate", adDouble, , adFldIsNullable
    .Fields("Rate").NumericScale = 4    'ini untuk menentukan jumlah angka koma / presisi
    .Fields.Append "Saldo", adCurrency, , adFldIsNullable
    .Fields("Saldo").NumericScale = 2   'ini untuk menentukan jumlah angka koma / presisi
    .Open
End With

Mengambil Log Data di Fingerprint CZKEM

2 comments
Berikut adalah cara pengambilan data log absen sidik jari di mesin fingerprint CZKEM. Untuk Koneksi ke mesin sidik jari silakan buka di Koneksi Fingerprint CZKEM.
Pertama-tama adalah membaca dulu semua data log
CZKEM1.ReadAllGLogData DeviceNumber

Proses pengambilan data log :
CZKEM1.SSR_GetGeneralLogData(DeviceNumber, EnrollNum, dwVerifyMode, dwInOutMode, dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond, dwWorkCode)

Berikut contoh source code-nya :
Private Sub GetLogData()
Dim DeviceNumber As Long
Dim EnrollNum As String
Dim dwVerifyMode As Long
Dim dwInOutMode As Long
Dim dwYear As Long
Dim dwMonth As Long
Dim dwDay As Long
Dim dwHour As Long
Dim dwMinute As Long
Dim dwSecond As Long
Dim dwWorkCode As Long

    CZKEM1.ReadAllGLogData DeviceNumber
   
    While CZKEM1.SSR_GetGeneralLogData(DeviceNumber, EnrollNum, dwVerifyMode, dwInOutMode, dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond, dwWorkCode)
        Text1.Text = EnrollNum
        Text2.Text = Format(dwDay, "00") & "/" & Format(dwMonth, "00") & "/" & Format(dwYear, "0000")
        Text3.Text = Format(dwHour, "00") & ":" & Format(dwMinute, "00") & ":" & Format(dwSecond, "00")
    Wend
End Sub

Semoga membantu...

** Mesin Fingerprint yang dipakai Solution X100-C

Penomoran Pada DatagridView VB.Net

0 comments
Cara menambahkan nomor pada DatagridView :


Tuliskan Kode program dibawah ini di event RowPostPaint di DataGridView

Koneksi Database SQL Server dan VB.Net

0 comments
ADO. NET
ADO merupakan singkatan dari Active X Data Object yang dipakai untuk mengaskes data dalam suatu
database seperti SQL Server, MS Access, Oracle ataupu file seperti file MS Excel. Didalam teknologi
.NET, ADO classic berkembang menjadi ADO.NET dengan beberapa perubahan seperti perubahan
object recordset dalam ADO menjadi beberpa object dalam ADO.NET dan lainnya.
Akses Data di ADO.NET bergantung pada dua komponen: Penyedia DataSet dan Data. Dataset
adalah, diputus dalam-memori representasi data. Hal ini dapat dianggap sebagai salinan lokal dari
bagian yang relevan dari database. DataSet adalah bertahan dalam memori dan data di dalamnya
dapat dimanipulasi dan diperbarui independen dari database. Ketika penggunaan DataSet ini selesai,
perubahan dapat dilakukan kembali ke pusat database untuk memperbarui. Data dalam DataSet dapat
dimuat dari sumber data yang valid seperti database server Microsoft SQL, Oracle atau database dari
database Microsoft Access.

Data Provider
Data Provider bertanggung jawab untuk menyediakan dan memelihara koneksi ke database. Sebuah
dataProvider adalah seperangkat komponen terkait yang bekerja sama untuk menyediakan data secara
efisien dan kinerja didorong. . NET Framework saat ini dilengkapi dengan dua DataProviders: SQL
Data Provider yang dirancang hanya untuk bekerja dengan SQL Server 7.0 Microsoft dan dataProvider
OLEDB yang memungkinkan kita untuk terhubung ke database jenis lain seperti Access dan Oracle.
Setiap data Provider terdiri dari kelas komponen berikut:
  • Object Connection yang menyediakan koneksi ke database
  • Object Command yang digunakan untuk mengeksekusi perintah
  • Obyek DataReader yang menyediakan forward-only, read only, recordset terhubung
  • Obyek DataAdapter yang populasikan DataSet terputus dengan data dan melakukan pembaruan.

Multiple Gammu Service

0 comments
Membuat Servis Gammu :
1. Gammu-smsd -c smsd -i   (Servis Gammu dengan nama Standar GammuSMSD)
2. Gammu-smsd -i -c smsdrc -n Modem1 (Servis Gammu dengan Nama Modem1)

Gammu-smsd -i -c [NamaSmsdrc] -n [NamaService]
Contoh :
Gammu-smsd -i -c smsdrc -n Gammu1
Gammu-smsd -i -c smsdrc1 -n Gammu2

Menghapus Servis :
1. Gammu-smsd -u (Menghapus servis gammu dengan nama standar GammuSMSD)
2. Gammu-smsd -n Modem1 -u (Hapus servis Gammu dengan nama Modem1)

gammu-smsd -n [NamaService] -u
Contoh :
gammu-smsd -n Gammu1 -u
gammu-smsd -n Gammu2 -u

Menjalankan Service :
gammu-smsd -c [NamaSmsdrc] -n [NamaService] -s
Contoh :
gammu-smsd -c smsdrc -n Gammu1 -s
gammu-smsd -c smsdrc1 -n Gammu2 -s

Menghentikan Service :
gammu-smsd -c [NamaSmsdrc] -n [NamaService] -k
Contoh :
gammu-smsd -c smsdrc -n Gammu1 -k
gammu-smsd -c smsdrc1 -n Gammu2 -k


/ untuk cek koneksi dengan modem/HP apakah bekerja dengan baik
gammu identify
// untuk mengirim SMS tanpa database
gammu sendsms TEXT 08xxxxxxxxxx -text coba
// untuk install service gammu
gammu-smsd -c smsdrc -i
// untuk menjalankan service gammu
gammu-smsd -c smsdrc -s
// untuk mengirim sms dengan metode inject
gammu-smsd-inject -c smsdrc TEXT 08xxxxxxxxxx -text coba
// untuk mengirim sms dengan metode inject dengan jumlah karakter > 166
gammu-smsd-inject -c smsdrc EMS 08xxxxxxxxxx -text coba
// untuk stop service gammu
gammu-smsd -c smsdrc -k
// untuk uninstall service gammu
gammu-smsd -c smsdrc -u

Multi Column Combo Box ActiveX

0 comments
ActiveX combobox yang menyediakan multi kolom / ComboBoxLB.ocx


Download ComboBoxLB

Check Status Service VB.NET

0 comments
Mengecek status service.

Imports System.ServiceProcess
Imports System.Management
 
Public Class TS_Service
 
    ' Is the service running?
    ' Returns true if we need to start the service
    Public Function CheckService(ByVal PC As String) As Boolean
        Dim obj As ManagementObject
 
        obj = New ManagementObject("\\" & PC & "\root\cimv2:Win32_Service.Name='TermService'")
        If Not IsNothing(obj) Then
            If obj("StartMode").ToString <> "Disabled" And obj("State").ToString = "Running" Then
                Return False
            End If
        End If
        Return True
    End Function
 
    Public Sub StartService(ByVal PC As String)
        Dim obj As ManagementObject
        Dim inParams, outParams As ManagementBaseObject
        Dim Result As Integer
        Dim sc As ServiceController
 
        obj = New ManagementObject("\\" & PC & "\root\cimv2:Win32_Service.Name='TermService'")
 
        ' Change the Start Mode to Manual
        If obj("StartMode").ToString = "Disabled" Then
            ' Get an input parameters object for this method
            inParams = obj.GetMethodParameters("ChangeStartMode")
            inParams("StartMode") = "Manual"
 
            ' do it!
            outParams = obj.InvokeMethod("ChangeStartMode", inParams, Nothing)
            Result = Convert.ToInt32(outParams("returnValue"))
            If Result <> 0 Then
                Throw New Exception("ChangeStartMode method error code " & Result)
            End If
        End If
 
        ' Start the service
        If obj("State").ToString <> "Running" Then
            ' now start the service
            sc = New ServiceController("TermService", PC)
            sc.Start()
            sc.WaitForStatus(ServiceControllerStatus.Running)
        End If
    End Sub
 
    Public Sub StopService(ByVal PC As String)
        Dim obj As ManagementObject
        Dim inParams, outParams As ManagementBaseObject
        Dim Result As Integer
 
        
        ' we can only disable the service and wait
        ' until the next reboot to stop it
 
         
        obj = New ManagementObject("\\" & PC & "\root\cimv2:Win32_Service.Name='TermService'")
 
        ' change the Start Mode to Disabled
        If obj("StartMode").ToString <> "Disabled" Then
            ' Get an input parameters object for this method
            inParams = obj.GetMethodParameters("ChangeStartMode")
            inParams("StartMode") = "Disabled"
 
            ' do it!
            outParams = obj.InvokeMethod("ChangeStartMode", inParams, Nothing)
            Result = Convert.ToInt32(outParams("returnValue"))
            If Result <> 0 Then
                Throw New Exception("ChangeStartMode method error code " & Result)
            End If
        End If
    End Sub
End Class

Show Data With Store Procedure And RecordSet In VB6

0 comments
Show Data With Store Procedure And RecordSet In VB6
(Menampilkan Data Menggunakan Store Procedure dan RecordSet di VB6)

Private Sub GetDetailUser(UserID As String)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cm As ADODB.Command
Dim sql As String

    Set cn = New ADODB.Connection   'Important to set new or u'll get an error
    Set cm = New ADODB.Command
    Set rs = New ADODB.Recordset
    
    cn.Open (ActiveCn)              'ActiveCN = Connection String
    With cm
        .ActiveConnection = cn
        .CommandType = adCmdStoredProc
        .CommandText = "[databasename]..spGetUserDetail"
        
        'Create Parameter
        .Parameters.Append .CreateParameter("@UserID", adBigInt, adParamInput, , Val(UserID))
    End With
    
    Set rs = cm.Execute
    
    With Text1
        If Not rs.EOF Then  'Do Not User rs.RecordCount
            .Text = rs!Name & "" & vbNewLine
            .Text = rs!Position & "" & vbNewLine
        End If
    End With
    
    Set cm = Nothing
    Set rs = Nothing
    Set cn = Nothing
End Sub

Hapus User Info di Fingerprint CZKEM

0 comments
Manual :
5.2.4.1 SSR_DeleteEnrollData
[Definition]
VARIANT_BOOL DeleteEnrollData([in] long dwMachineNumber, [in] long dwEnrollNumber,
[in] long dwEMachineNumber, [in] long dwBackupNumber)
[Usage]
Delete registration data.
[Parameter]
dwMachineNumber, dwEMachineNumber
Device number
dwEnrollNumber
User ID
dwBackupNumber
Index of the fingerprint
The value ranges from 0 to 9. It this case, the device also checks whether the user
has other fingerprints or passwords. If no, the device deletes the user.
When the value is 10, the device deletes the password. The device also checks
whether the user has fingerprint data. If no, the device deletes the user.
When the value is 11 or 13, the device deletes all fingerprint data of the user. When the
value is 12, the device deletes the user (including all fingerprints, card numbers and
passwords of the user).
[Return Value]
Return True if it is successful, or return False.
[Related Function]
SetEnrollData, GetEnrollData

    dwBackupNumber = 12
    If CZKEM1.SSR_DeleteEnrollData(DeviceNumber, EnrollNum, dwBackupNumber ) = True Then
        CZKEM1.RefreshData DeviceNumber
    Else
        CZKEM1.GetLastError dwErrCode
        MsgBox "Error Description : " & GetLastErrorName(dwErrCode), vbCritical, "Can't Connect Device"
        Me.MousePointer = 0
        Exit Sub
    End If

Koneksi Fingerprint CZKEM

5 comments
Koneksi Komputer ke Fingerprint CZKEM
Komponen tambahan ComboBoxLB

Private Sub cmdConnect_Click()
Dim dwErrCode As Long

    Me.MousePointer = 11
    If IsNull(cboMesin.Column(1)) = True Then
        MsgBox "Pilih Mesin Sidik Jari yang Akan Anda Hubungkan!", vbCritical, "Select Device First"
        cboMesin.SetFocus
        Me.MousePointer = 0
        Exit Sub
    End If
    
    CZKEM1.Disconnect
    
    If cmdConnect.Caption = "Connect" Then
        Select Case cboMesin.Column(2)
            Case "USB"
                dConn = CZKEM1.Connect_Com(CLng(cboMesin.Column(5)), CLng(cboMesin.Column(1)), CLng(cboMesin.Column(6)))
                DeviceNumber = cboMesin.Column(1)
                If dConn Then
                    CZKEM1.ACUnlock DeviceNumber, 1
                    cmdConnect.Caption = "Disconnect"
                    CZKEM1.RegEvent DeviceNumber, 65535
                Else
                    CZKEM1.GetLastError dwErrCode
                    MsgBox "Error Description : " & GetLastErrorName(dwErrCode), vbCritical, "Can't Connect Device"
                    DeviceNumber = 0
                End If
            Case Else
                dConn = CZKEM1.Connect_Net(cboMesin.Column(3), cboMesin.Column(4))
                DeviceNumber = cboMesin.Column(1)
                If dConn Then
                    CZKEM1.ACUnlock DeviceNumber, 1
                    cmdConnect.Caption = "Disconnect"
                    CZKEM1.RegEvent DeviceNumber, 65535
                Else
                    CZKEM1.GetLastError dwErrCode
                    MsgBox "Error Description : " & GetLastErrorName(dwErrCode), vbCritical, "Can't Connect Device"
                    DeviceNumber = 0
                End If
        End Select
        Me.MousePointer = 0
        Exit Sub
    End If
    
    If cmdConnect.Caption = "Disconnect" Then
        CZKEM1.Disconnect
        cmdConnect.Caption = "Connect"
        dConn = False
        DeviceNumber = 0
    End If
    Me.MousePointer = 0
End Sub

Wrap Text Function (VB 6)

0 comments
Wrap Text Function yaitu Fungsi untuk memisahkan kalimat ke baris selanjutnya berdasarkan jumlah karakter.

Function FormatString(ByVal StringToFormat As String, ByVal MaxLineLen As Integer) As String
    Dim TempString As String
    Dim Pos As Long

    FormatString = ""
    Pos = 1
    While StringToFormat <> ""
        If Len(StringToFormat) <= MaxLineLen Then
            TempString = Trim(StringToFormat)
        Else
            TempString = Mid(StringToFormat, Pos, MaxLineLen + 1)
            TempString = Trim(Left(TempString, InStrRev(TempString, " ")))
        End If

        FormatString = FormatString & TempString & vbCrLf
        StringToFormat = LTrim(Right(StringToFormat, Len(StringToFormat) - Len(TempString)))
    Wend
End Function

Sumber : ?

Wrap Text

0 comments
Mengatur teks agar terpisah di baris selanjutnya.
Modul :
Source Code :
Sub WrapPText(obj As Object, xLeft As Single, xTop As Single, xWidth As Single, strText As String)
    Dim Posisi As Long
    Dim PosisiSpasi As Long
    
    obj.CurrentX = xLeft
    obj.CurrentY = xTop
    
    Do While Posisi < Len(strText)
        Posisi = Posisi + 1
        If Mid$(strText, Posisi, 2) = vbCrLf Then
            obj.CurrentX = xLeft
            obj.CurrentY = xTop
            
            obj.Print Left(strText, Posisi - 1)
            strText = LTrim(Mid(strText, Posisi + 2))
            Posisi = 0:
            PosisiSpasi = 0
        ElseIf Mid$(strText, Posisi, 1) = " " Then
            PosisiSpasi = Posisi
        End If
        'Jika lebar strText melampaui lebar form
        If obj.TextWidth(Left(strText, Posisi)) > (xWidth - 400) Then
            If PosisiSpasi Then
                Posisi = PosisiSpasi
            End If
            
            obj.CurrentX = xLeft
            'obj.CurrentY = xTop + (Posisi * obj.TextHeight(strText))
            
            obj.Print Left(strText, Posisi - 1)
            strText = LTrim(Mid(strText, Posisi))
            Posisi = 0:
            PosisiSpasi = 0
        End If
        DoEvents
    Loop
    If Len(strText) Then
        obj.CurrentX = xLeft
        obj.Print strText
    End If
End Sub

Contoh Penggunaan :

Copy Paste Clipboard

0 comments
'Menggunakan Copy Paste dengan Clipboard di VB6
Private Sub Command1_Click()
    'Mengosongkan Clipboard
    Clipboard.Clear
    'Menentukan Clipboard
    Clipboard.SetText Text1.Text
End Sub

Private Sub Command2_Click()
    'Mengambil Data Teks dari Clipboard
    Text1.Text = Clipboard.GetText
End Sub

Cegah Aplikasi Visual Basic Bisa Dijalankan Dua Kali

0 comments
Option Explicit

Declare Function OpenIcon Lib "user32" (ByVal hwnd As Long) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long

Public Const GW_HWNDPREV = 3

Sub ActivatePrevInstance()

    Dim AppTitle As String
    Dim PrevHndl As Long
    Dim result As Long

    AppTitle = App.Title
    App.Title = "unwanted instance"
    
    If PrevHndl = 0 Then
        PrevHndl = FindWindow("ThunderRT6Main", AppTitle)
        If PrevHndl <> 0 Then
                PrevHndl = GetWindow(PrevHndl, GW_HWNDPREV)
                result = OpenIcon(PrevHndl)
                result = SetForegroundWindow(PrevHndl)
                End
        End If
    End If
    
End Sub
Procedure dijalankan pada event Form_Load()
If App.PrevInstance Then ActivatePrevInstance

Optimasi SQL

0 comments


 Database administrator dan programmer sering menggunakan SQL (Structured Query Language) untuk memberikan instruksi kepada database. Tetapi hati-hati, berikan instruksi yang tepat agar database Anda tidak ngambek.

JIKA DIIBARATKAN manusia, database adalah sahabat yang patuh dan mengerti pada setiap perintah yang diberikan, sayangnya terkadang tidak berlaku sebaliknya, kita tidak patuh dan tidak mengerti pada “perintah” yang diberikan database. 

Database kadang dapat “mengomel” dengan berbagai cara, bisa jadi dalam bentuk performance yang menurun, pesan kesala han, atau bahkan hasil laporan yang tidak sesuai. Semua-nya dapat kita minimalisasi, bahkan sebelum hal itu terjadi.

SQL dan RDBMS


 
VB Source Code | © 2011 Design by DheTemplate.com and Theme 2 Blog

Find more free Blogger templates at DheTemplate.com - Daily Updates Free Blogger Templates