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
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.
Semoga Bermanfaat
Silakan Download Disini
Semoga Bermanfaat
Runtime Error 430 - Class Does Not Support Automation or Does Not Support Expected Interface
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 :
Ini sudah saya coba dan berhasil.
Semoga berguna...
Sumber
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
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.
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
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
Membuat recordset sementara di visual basic 6 yang diharuskan memakai angka dibelakang koma/desimal (presisi).
Untuk menentukan jumlah koma/desimal harus menyertakan kode ini
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 :
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
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
Proses pengambilan data log :
Berikut contoh source code-nya :
Semoga membantu...
** Mesin Fingerprint yang dipakai Solution X100-C
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
Cara menambahkan nomor pada DatagridView :
Tuliskan Kode program dibawah ini di event RowPostPaint di DataGridView
Tuliskan Kode program dibawah ini di event RowPostPaint di DataGridView
Koneksi Database SQL Server dan VB.Net
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:
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
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
Check Status Service VB.NET
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
Show Data With Store Procedure And RecordSet In VB6
(Menampilkan Data Menggunakan Store Procedure dan RecordSet di 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
Manual :
5.2.4.1 SSR_DeleteEnrollData
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
Koneksi Komputer ke Fingerprint CZKEM
Komponen tambahan ComboBoxLB
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)
Wrap Text Function yaitu Fungsi untuk memisahkan kalimat ke baris selanjutnya berdasarkan jumlah karakter.
Sumber : ?
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
Mengatur teks agar terpisah di baris selanjutnya.
Modul :
Contoh Penggunaan :
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
'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
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
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
Subscribe to:
Posts (Atom)



