Dengan unit ini maka tidak perlu lagi melakukan setting manual ODBC jika program dipindahkan antar komputer,
settingan manual ODBC ini yang sering dikeluhkan oleh programmer2 karena dianggap tidak efektif
Nantinya dengan Unit ini program akan secara otomatis membuatkan settingan ODBC untuk komputer yang bersangkutan
Jika program baru pertama kali dijalankan maka running yang pertama akan digunakan sebagai inisialisasi ODBC terlebih dahulu, sehingga running yang pertama kali akan menimbulkan error, namun untuk running selanjutnya tidak akan error.
Gunakan ini dalam suatu unit tersendiri, yang nantinya class function yang ada dalam unit ini bisa dipanggil dari unit lain
Unit ini dapat menggunakan File INI atau registry sebagai parameter masukannya
Atau parameter password dapat mengunakan teknik enkripsi sehingga password yang tertulis di File INI bukan password aslinya
settingan manual ODBC ini yang sering dikeluhkan oleh programmer2 karena dianggap tidak efektif
Nantinya dengan Unit ini program akan secara otomatis membuatkan settingan ODBC untuk komputer yang bersangkutan
Jika program baru pertama kali dijalankan maka running yang pertama akan digunakan sebagai inisialisasi ODBC terlebih dahulu, sehingga running yang pertama kali akan menimbulkan error, namun untuk running selanjutnya tidak akan error.
Gunakan ini dalam suatu unit tersendiri, yang nantinya class function yang ada dalam unit ini bisa dipanggil dari unit lain
Unit ini dapat menggunakan File INI atau registry sebagai parameter masukannya
Atau parameter password dapat mengunakan teknik enkripsi sehingga password yang tertulis di File INI bukan password aslinya
unit UKoneksi; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Registry; type // ========= Resulttype ============= TResultType1 = Boolean; // ======== class type ============= TExistsDriverODBC = TResultType1; TExistsAliasAccess = TResultType1; TExistsAliasMySQL = TResultType1; Alias = class class function ExistsDriverODBC(driver: string; var DriverDll, Deskripsi:string): TExistsDriverODBC; class function ExistsAliasAccess(Alias, dbq, Driver : string): TExistsAliasAccess; class function ExistsAliasMySQL(Alias, Server, db, User, Driver, Deskripsi, password : string): TExistsAliasMySQL; end; implementation class function Alias.ExistsDriverODBC(driver: string; var DriverDll, Deskripsi:string): TExistsDriverODBC; var Registry: TRegistry; ExistRegistry, Hasil: boolean; ListDrivers: TStrings; i, PosDriver: Integer; begin //Pengecekan ODBC Driver yg sudah terinstal Registry:=TRegistry.Create; Registry.RootKey:=HKEY_LOCAL_MACHINE; ExistRegistry:=Registry.OpenKey('SOFTWARE\\ODBC\\ODBCINST.INI\\ODBC DRIVERS',False); Hasil:=false; if ExistRegistry then begin ListDrivers:=TStringList.Create; Registry.GetValueNames(ListDrivers); //memposisikan driver sesuai dengan yg dicari i:=0; while (i < PosDriver) do begin if UPPERCASE(Copy(ListDrivers.Strings[i],0,length(driver)))=UPPERCASE(driver) then begin Hasil:=true; posDriver:=i; end; i:=i+1; end; end; if Hasil then begin Registry.CloseKey; DriverDll:=''; Registry.OpenKey('SOFTWARE\\ODBC\\ODBCINST.INI\'+ListDrivers.Strings[posDriver],False); DriverDll:=Registry.ReadString('Driver'); Deskripsi:=ListDrivers.Strings[posDriver]; end; Registry.Free; result:=Hasil; end; class function Alias.ExistsAliasAccess(Alias, dbq, Driver : string): TExistsAliasAccess; var Registry: TRegistry; ExistRegistry, Hasil: boolean; ListDrivers: TStrings; i, PosDriver: Integer; begin //Pengecekan sesuai spesifikasi Alias ODBC Ms Access Registry:=TRegistry.Create; Registry.RootKey:=HKEY_LOCAL_MACHINE; ExistRegistry:=Registry.OpenKey('SOFTWARE\\ODBC\\ODBC.INI\'+Alias,False); if not ExistRegistry then begin result:=false; Registry.OpenKey('SOFTWARE\\ODBC\\ODBC.INI',False); Registry.CreateKey(Alias); Registry.OpenKey(Alias,False); Registry.WriteString('DBQ', dbq); Registry.WriteString('Driver', driver); Registry.WriteInteger('Driverid', 25); Registry.WriteString('Fil', 'MS Access'); Registry.WriteInteger('SafeTransactions', 0); Registry.WriteString('UID', ''); Registry.CloseKey; Registry.OpenKey('SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources',False); Registry.WriteString(Alias, dbq); Registry.CloseKey; end else begin result:=true; Registry.OpenKey('SOFTWARE\\ODBC\\ODBC.INI',False); Registry.OpenKey(Alias,False); Registry.WriteString('dbq', dbq); Registry.CloseKey; end; Registry.Free; end; class function Alias.ExistsAliasMySQL(Alias, Server, db, User, Driver, Deskripsi, password, port : string): TExistsAliasMySQL; var Registry: TRegistry; ExistRegistry, Hasil: boolean; ListDrivers: TStrings; i, PosDriver: Integer; begin //Pengecekan sesuai spesifikasi Alias ODBC MySQL Registry:=TRegistry.Create; Registry.RootKey:=HKEY_LOCAL_MACHINE; ExistRegistry:=Registry.OpenKey('SOFTWARE\\ODBC\\ODBC.INI\'+Alias,False); if not ExistRegistry then begin result:=false; Registry.OpenKey('SOFTWARE\\ODBC\\ODBC.INI',False); Registry.CreateKey(Alias); Registry.OpenKey(Alias,False); Registry.WriteString('Database',db); Registry.WriteString('Description',Deskripsi); Registry.WriteString('Driver',driver); Registry.WriteString('Option','3'); Registry.WriteString('Password',password); Registry.WriteString('Port',port); Registry.WriteString('Server',server); Registry.WriteString('Stmt',''); Registry.WriteString('User',user); Registry.CloseKey; Registry.OpenKey('SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources',False); Registry.WriteString(Alias,Deskripsi); Registry.CloseKey; end else begin result:=true; Registry.OpenKey('SOFTWARE\\ODBC\\ODBC.INI',False); Registry.OpenKey(Alias,False); Registry.WriteString('Server',server); Registry.WriteString('Description',Deskripsi); Registry.WriteString('Database',db); Registry.WriteString('User',user); Registry.WriteString('Password',password); Registry.WriteString('Port',port); Registry.CloseKey; end; Registry.Free; end; end. |
Syntax Highlighted with https://pascal-id.org/syntax |
Random Articles
Last Articles
Recent Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 4 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago