Home > Firebird, Visual Basic > Contoh pemanggilan store procedure dan view firebird dari aplikasi

Contoh pemanggilan store procedure dan view firebird dari aplikasi

March 19, 2010

Ini merupakan artikel puncax😀 dari pengenalan firebird yang dilanjutkan dengan pembuatan store procedure (SP), trigger dan view dan kini saat kita membahas penggunaan SP dan view.

Untuk mengakses firebird dari aplikasi kita membutuhkan Firebird ODBC yang bisa didownload disini

1. Store Procedure

Disini kita akan mengakses SP proc_add_supplier yang mempunyai tiga parameter yaitu : nama, alamat dan telepon

Ada 2 cara untuk mengakses SP :

Private Sub cmdAksesSP_Click()
    Dim strSql  As String

    strSql = "EXECUTE PROCEDURE proc_add_supplier('KoKom Armagedon', 'Yogyakarta', '0813 8176 xxxx')"
    conn.Execute strSql 'conn -> variabel dengan tipe ADODB.Connection
End Sub

EXECUTE PROCEDURE merupakan perintah bawaan firebird untuk mengakses store procedure jadi tidak semua database server mempunyai perintah ini.

Cara yang ke dua dengan menggunakan kombinasi objek ADODB.Command, ADODB.Parameter dan ADODB.Connection.

Private Function addSupplier(ByVal nama As String, ByVal alamat As String, ByVal telepon As String) As Boolean
    Dim cmd     As ADODB.Command
    Dim param   As ADODB.Parameter
    Dim i       As Long

    On Error GoTo errHandle

    Set cmd = New ADODB.Command
    cmd.ActiveConnection = Conn

    Set param = cmd.CreateParameter("nama", adVarChar, adParamInput, 30, nama)
    cmd.Parameters.Append param

    Set param = cmd.CreateParameter("alamat", adVarChar, adParamInput, 50, alamat)
    cmd.Parameters.Append param

    Set param = cmd.CreateParameter("telepon", adVarChar, adParamInput, 20, telepon)
    cmd.Parameters.Append param

    cmd.CommandText = "proc_add_supplier"
    cmd.CommandType = adCmdStoredProc
    cmd.Execute

    addSupplier = True

    For i = 0 To cmd.Parameters.Count - 1
        cmd.Parameters.Delete (0)
    Next

    Set cmd = Nothing
    Set param = Nothing

    Exit Function
errHandle:
    addSupplier = False
End Function

kemudian tinggal panggil seperti ini

Private Sub cmdAksesSP_Click()
    Dim result  As Boolean

    result = addSupplier("KoKom Armagedon", "Yogykarta", "0813 8176 xxxx")
End Sub

2. Store Procedure yang dijadikan fungsi

Store procedure yang kita akses adalah func_get_stok yang mempunyai parameter kode barang. Caranya mirip dengan cara ke dua untuk mengakses store procedure biasa.

Private Function getStokBarang(ByVal kodeBarang As String) As Long
    Dim cmd     As ADODB.Command
    Dim param   As ADODB.Parameter
    Dim i       As Long

    On Error GoTo errHandle

    Set cmd = New ADODB.Command
    cmd.ActiveConnection = conn

    Set param = cmd.CreateParameter("kode_barang", adVarChar, adParamInput, 20, kodeBarang)
    cmd.Parameters.Append param

    Set param = cmd.CreateParameter("stok", adNumeric, adParamOutput)  'ini tambahan parameter yg harus didaftarkan untuk menampung return value
    param.Precision = 5
    param.NumericScale = 2
    cmd.Parameters.Append param

    cmd.CommandText = "func_get_stok"
    cmd.CommandType = adCmdStoredProc
    cmd.Execute

    getStokBarang = cmd.Parameters("stok").Value 'membaca nilai kembalian fungsi (return value)

    For i = 0 To cmd.Parameters.Count - 1
        cmd.Parameters.Delete (0)
    Next

    Set cmd = Nothing
    Set param = Nothing

    Exit Function
errHandle:
    getStokBarang = 1
End Function

kemudian tinggal panggil seperti ini

Private Sub cmdAksesSP_Click()
    Debug.Print "jumlah stok : " & getStokBarang("12345")
End Sub

Variabel cmd, param dan i sebaiknya dideklarasikan di bagian [general declaration] jika akan digunakan lebih dari 1 kali.

3. View

Untuk mengakses view sama seperti memanggil query biasa, oleh karena itu kita membutuhkan variabel dengan tipe recordset untuk menampung hasil view/query.

Private Sub cmdAksesView_Click()
    Dim rs      As ADODB.Recordset
    Dim strSql  As String
    Dim i       As Long

    strSql = "SELECT * FROM v_info_pembelian" 'v_info_pembelian -> nama view
    Set rs = openRecordset(strSql)
    If Not rs.EOF Then
        For i = 1 To getRecordCount(rs)
            Debug.Print "Supplier : " & rs("nama").Value & vbCrLf & _
                        "Alamat : " & rs("alamat").Value & vbCrLf & _
                        "Nota : " & rs("nota").Value & vbCrLf & _
                        "Tanggal " & Format(rs("tanggal").Value, "dd/MM/yyyy")
            rs.MoveNext
        Next i
    End If
    Call closeRecordset(rs)
End Sub

Sample program bisa didownload disini.

Selamat mencoba🙂

  1. GroltandPrott-tool
    May 17, 2010 at 1:47 am

    awal yang baik

  2. May 17, 2010 at 2:29 am

    GroltandPrott-tool :

    awal yang baik

    Mudah2an😀

  3. saskia_paramitha
    August 9, 2010 at 4:02 pm

    mas K4m4r mitha mau tanya lagi nich,,, please dijawab ya mas,, mitha punya koding nyimpan foto kedalam database sql server, acces dan mysql ini kodingnya mau nyimpan data foto tipe blob :
    Db.ExecQuery (“insert into BARANG ” & _
    “(KODE_BARANG,KODE_KATEGORI,” & _
    “NAMA_BARANG,ALAMAT,TANGGAL,” & _
    “KONTAK_PERSON,TELEPON,KETERANGAN,” & _
    “HARGA_POKOK,STATUS,Stock,foto) ” & _
    “values(‘” & TxtKode_12 & “‘,” & _
    “‘” & ParCbo(CboKategori) & “‘,” & _
    “‘” & Replace(TxtNama_50.Text, “‘”, “””) & “‘,” & _
    “‘” & Replace(txtAlamat_99.Text, “‘”, “””) & “‘,” & _
    “‘” & DtTanggal & “‘, ” & _
    “‘” & Replace(txtKontakPerson_25.Text, “‘”, “””) & “‘,” & _
    “‘” & Replace(txtTelepon_12.Text, “‘”, “””) & “‘,” & _
    “‘” & Replace(txtKeterangan_99.Text, “‘”, “””) & “‘,” & _
    “” & naTxtHargaPokok & “,” & _
    “‘” & CboStatus & “‘,” & _
    “” & naStock & “,” & _
    “‘” & Replace(txtPath_99.Text, “‘”, “””) & “‘)”)

    SavePicture Img_Photo.Picture, App.Path & “\Gambar” & “\” & Me.visitid.Text & “.bmp”
    If Sfile “” Then
    Dim RSt As New ADODB.Recordset
    Dim rsstream As New ADODB.Stream
    rsstream.Type = adTypeBinary
    rsstream.Open
    rsstream.LoadFromFile Sfile
    Set rs = db.SelectRecord(“select FOTO from BARANG where KODE_BARANG='” & TxtKode_12.Text & “‘”, 2, 2)
    rs(“FOTO”).Value = rsstream.Read
    rs.Update
    rs.Close
    End If
    ‘—pertanyaan mitha kenapa ya di database fire bird kode simpan foto tersebut tidak bisa, apa yang salah apakah serumit itu untuk nyimpan foto kedalam database firebird…. saya newbi firebird… kalo mas kamar biasa mau nyimpan foto di firebir gimana mas kodenya…. bantuin mitha ya mas…
    terima kasih sekali atas bantuan nya mas k4m4r, oya mitha juga anggota i-bego.com

  4. August 9, 2010 at 11:41 pm

    saskia_paramitha :

    pertanyaan mitha kenapa ya di database fire bird kode simpan foto tersebut tidak bisa, apa yang salah apakah serumit itu untuk nyimpan foto kedalam database firebird…. saya newbi firebird… kalo mas kamar biasa mau nyimpan foto di firebir gimana mas kodenya…. bantuin mitha ya mas…
    terima kasih sekali atas bantuan nya mas k4m4r,

    Untuk menyimpan gambar di firebird selain tipe datanya diset BLOB ada attribut lain yg harus diatur yaitu : SEGMENT SIZE=80 dan SUB TYPE=0

    saskia_paramitha :

    oya mitha juga anggota i-bego.com

    Ooo gt, pasti cuma jadi pengamat yg baik😀

  5. saskia_paramitha
    August 11, 2010 at 4:53 am

    Wah benar sekali pak k4m4r, saya di i bego pengamat yang budiman….🙂🙂

    • August 11, 2010 at 5:37 am

      Oke berarti udah case closed ya untuk menyimpan data gambar di Firebird

  6. saskia_paramitha
    August 11, 2010 at 3:29 pm

    iya pak terima kasih tips, nya

  7. saskia_paramitha
    August 11, 2010 at 3:56 pm

    tapi waktu nyimpan masih timbul debug pak,,,, saya uda coba pilih tipe blob SEGMENT SIZE=80 dan SUB TYPE=0, tapi
    ini debugnya muncul pesan : insufficient key column information fot updating or refressing…
    apa ada cara lain pak buat nyimpan foto

  8. August 12, 2010 at 1:45 am

    saskia_paramitha :

    iya pak terima kasih tips, nya

    Oke sama2x

    saskia_paramitha :

    tapi waktu nyimpan masih timbul debug pak,,,, saya uda coba pilih tipe blob SEGMENT SIZE=80 dan SUB TYPE=0, tapi
    ini debugnya muncul pesan : insufficient key column information fot updating or refressing…
    apa ada cara lain pak buat nyimpan foto

    Yg jelas artikel di SINI bisa digunakan untuk menyimpan dan menampilkan data gambar di firebird.

  9. maman
    September 6, 2010 at 8:05 am

    Om mau tanya ttg procedure di firebird
    saya udah buat procedure di firebird yg memliliki 1 parameter input (berupa tanggal)
    dan tiga parameter output (sebut saja a,b,c)

    yg mau saya tanyakan gmn cara pemanggilannya di vb?
    nantinya output dari procedure tadi saya tampung di variabel yg di vb

    Terima kasih

    • September 6, 2010 at 10:01 am

      Oke misalkan prosedurenya seperti berikut :

      CREATE PROCEDURE parsing_tanggal (tanggal date)
      RETURNS (
          hari smallint,
          bulan smallint,
          tahun smallint)
      AS
      BEGIN
          hari = SUBSTRING(:tanggal FROM 9 FOR 2);
          bulan = SUBSTRING(:tanggal FROM 6 FOR 2);
          tahun = SUBSTRING(:tanggal FROM 1 FOR 4);
      END
      

      Untuk contoh penggunaannya cukup seperti ini :

      Private Sub cmdAksesSP_Click()
          Dim cmd     As ADODB.Command
          Dim param   As ADODB.Parameter
          
          Dim tgl     As String
          
          Dim hari    As Integer
          Dim bulan   As Integer
          Dim tahun   As Integer
          Dim i       As Integer
          
          tgl = Format(Now, "yyyy/MM/dd")
          
          Set cmd = New ADODB.Command
          cmd.ActiveConnection = conn
      
          'parameter input
          Set param = cmd.CreateParameter("tanggal", adDate, adParamInput, , tgl)
          cmd.Parameters.Append param
          
          'mulai dari sini parameter outputnya
          Set param = cmd.CreateParameter("hari", adInteger, adParamOutput)
          cmd.Parameters.Append param
          
          Set param = cmd.CreateParameter("bulan", adInteger, adParamOutput)
          cmd.Parameters.Append param
          
          Set param = cmd.CreateParameter("tahun", adInteger, adParamOutput)
          cmd.Parameters.Append param
          
          cmd.CommandText = "parsing_tanggal"
          cmd.CommandType = adCmdStoredProc
          
          cmd.Execute
          
          'tampung hasil parameter outputnya disini
          hari = cmd.Parameters("hari").Value
          bulan = cmd.Parameters("bulan").Value
          tahun = cmd.Parameters("tahun").Value
          
          For i = 0 To cmd.Parameters.Count - 1
              cmd.Parameters.Delete (0)
          Next
          
          Set cmd = Nothing
          Set param = Nothing
          
          MsgBox "Hari : " & hari & vbCrLf & _
                 "Bulan : " & bulan & vbCrLf & _
                 "Tahun : " & tahun
      End Sub
      

      Selamat mencoba🙂

      • maman
        September 6, 2010 at 11:45 pm

        Makasih sbelumnya om, tapi saya masih blum berhasil.
        saya punya procedure seperti ini

        ‘————————–
        ALTER PROCEDURE PROC_ABSEN (
        TGL DATE)
        RETURNS (
        JML_HADIR SMALLINT,
        JML_SAKIT SMALLINT,
        JML_IJIN SMALLINT,
        JML_ALPHA SMALLINT)
        AS
        begin
        /* Procedure Text */
        SELECT COUNT(view_absen_siswa.hadir) FROM view_absen_siswa WHERE view_absen_siswa.hadir=1 AND view_absen_siswa.tgl = :tgl into :jml_hadir;
        SELECT COUNT(view_absen_siswa.hadir) FROM view_absen_siswa WHERE view_absen_siswa.sakit=1 AND view_absen_siswa.tgl = :tgl into :jml_sakit;
        SELECT COUNT(view_absen_siswa.hadir) FROM view_absen_siswa WHERE view_absen_siswa.ijin=1 AND view_absen_siswa.tgl = :tgl into :jml_ijin;
        SELECT COUNT(view_absen_siswa.hadir) FROM view_absen_siswa WHERE view_absen_siswa.absen=1 AND view_absen_siswa.tgl = :tgl into :jml_alpha;
        suspend;
        end
        ‘————————–

        setelah saya coba tampilin di vb hasilnya malah ga sesuai seperti hasil di firebird

        mohon pencerahannya..😀

  10. September 7, 2010 at 2:21 am

    Masudnya beda klo jalani prosedurnya seperti ini (dari ibexpert)

    execute procedure PROC_ABSEN 'tanggal'
    

    n seharusnya enggak ada masalah dg prosedurnya atw coba non-aktifkan perintah SUSPENDnya

    SUSPEND
    Only for SELECT procedures which return tables: Waits for the client to request the next line. Returns the next line to the client.

    kan returns dari procedurenya bukan table.

    • maman
      September 7, 2010 at 2:25 am

      Alhamdulillah, akhirnya udah bisa..
      ternyata memang ga usah pake Suspend.

      Terima kasih atas bantuannya…😀

      • September 7, 2010 at 2:43 am

        Oke om sama2x🙂

  11. zzzatm
    November 19, 2010 at 10:03 am

    kalo mau query dari VBnya gimana ya…

    oiya, adakah file dokumentasi untuk query VB dengan firebird?
    thanks…

    • November 19, 2010 at 12:00 pm

      Sama aja lagi om seperti om query ke MySQL, SQL Server, PostgreSQL, Ms Access, SQLite de el el

      Namanya juga SQL -> Standard Query Language, biasanya yg beda hanya di fungsinya aja.

      CMIIW😀

  12. birawa84
    April 20, 2011 at 9:22 am

    ada contoh Store Procedure vb6 dg mysql gak mas?? ane pengen belajar nie

    • April 21, 2011 at 2:11 am

      Coba referensi ini om, untuk cara pemanggilan di vbnya tetap sama (menggunakan cara yg kedua).

  13. birawa84
    April 20, 2011 at 9:25 am

    🙂

  14. desy
    June 13, 2011 at 7:09 am

    mas mau tanya,gmn ya cara nya buar ngeluarin 3 dr stored rocedure di firebird …
    misalnya gn mas…

    nonota tanggal
    ====== ==========
    01 06-06-2011

    kodebarang namabarang jumlah hargabeli total
    ========= ========== ===== ======== ====
    001 kursi 2 3000 6000

    grandtotal
    ========
    6000

    parameter dr nonota nya mas,mohon bantuannya ya mas….thnk u🙂

    • June 13, 2011 at 7:51 am

      Maksudnya begitu prosedurnya di panggil mengeluarkan output seperti diatas ?

  15. desy
    June 14, 2011 at 4:41 am

    iya mas,maksud nya ketika procedure di panggil keluar data diatas 3 table gt,saia udh coba to malah jd 1 tablenya memnjang gt mas…

    gn jadinya mas…..

    NONOTA TANGGAL KODE NAMA JMLH HARGA TOTAL GRANDTOTAL
    ============ =========== ============ ========== ============ ============ ============ ============
    1 2011-01-05 1 bedak 10 20000 200000 230000

    trus untuk itu jg ada 2 brg mas tp yg keluar cman 1 trus grandtotalnya ngitung julah 2 barang,,
    ini souce code yg saia tulis mas

    SET TERM ^;
    CREATE PROCEDURE spnota3(pnomasuk int)
    RETURNS (
    nonota int,
    tanggal date,
    kode int,
    nama varchar(10),
    jmlh int,
    harga int,
    total int,
    grandtotal int )
    AS
    declare variable i integer;
    BEGIN
    i = 0;
    i = i+1;
    WHILE (i<=3)DO BEGIN FOR
    SELECT tbltransmasuk.nomasuk, tbltransmasuk.tanggal FROM tbltransmasuk
    WHERE nomasuk =:pnomasuk
    INTO :nonota, :tanggal
    DO BEGIN FOR
    SELECT tblrincimasuk.kodebarang, tblbarang.namabarang, tblrincimasuk.jumlah, tblrincimasuk.hargabeli, (tblrincimasuk.jumlah*tblrincimasuk.hargabeli)
    FROM tblrincimasuk, tblbarang
    WHERE tblrincimasuk.kodebarang = tblbarang.kodebarang AND tblrincimasuk.nomasuk =:pnomasuk
    INTO :kode, :nama, :jmlh, :harga, :total
    DO BEGIN
    SELECT (sum(jumlah*hargabeli)) FROM tblrincimasuk
    WHERE nomasuk =:pnomasuk
    INTO :grandtotal;
    SUSPEND ;
    END
    END
    END
    END ^

    mohon bantuannya ya mas,lg skripsi dan bener" blm mengerti firebird…thank u🙂

  16. desylagi
    June 15, 2011 at 4:27 am

    mas ini desy lg,yang tanya stored procedure firebird kmrn yg mengeluarkan 3 table gt,,iya mas outputnya 3 table seperti pertanyaan kmrn…

    ini procedure yg saia coba buat mas,,

    SET TERM ^;
    CREATE PROCEDURE spnota3(pnomasuk int)
    RETURNS (
    nonota int,
    tanggal date,
    kode int,
    nama varchar(10),
    jmlh int,
    harga int,
    total int,
    grandtotal int )
    AS
    declare variable i integer;
    BEGIN
    i = 0;
    i = i+1;
    WHILE (i<=3)DO BEGIN FOR
    SELECT tbltransmasuk.nomasuk, tbltransmasuk.tanggal FROM tbltransmasuk
    WHERE nomasuk =:pnomasuk
    INTO :nonota, :tanggal
    DO BEGIN FOR
    SELECT tblrincimasuk.kodebarang, tblbarang.namabarang, tblrincimasuk.jumlah, tblrincimasuk.hargabeli, (tblrincimasuk.jumlah*tblrincimasuk.hargabeli)
    FROM tblrincimasuk, tblbarang
    WHERE tblrincimasuk.kodebarang = tblbarang.kodebarang AND tblrincimasuk.nomasuk =:pnomasuk
    INTO :kode, :nama, :jmlh, :harga, :total
    DO BEGIN
    SELECT (sum(jumlah*hargabeli)) FROM tblrincimasuk
    WHERE nomasuk =:pnomasuk
    INTO :grandtotal;
    SUSPEND ;
    END
    END
    END
    END ^

    tp keluarnya malah jd 1 table mas bkn 3….seperti ini outpunya mas…

    NONOTA TANGGAL KODE NAMA JMLH HARGA TOTAL GRANDTOTAL
    ============ =========== ============ ========== ============ ============ ============ ============
    1 2011-01-05 1 bedak 10 20000 200000 230000

    mohon bantuannya ya mas,saya blm memahami cara kerja firebird….thank u🙂

    • June 15, 2011 at 6:32 am

      Masalahnya susah nih mau cobanya, enggak ada sample datanya

  17. desylagi
    June 15, 2011 at 6:41 am

    maksudnya sample databasenya ya mas,??
    ini tuh seperti nota barang gt mas, jd ketika di panggil nonotanya keluarin output 3 table gt,,

    ini database yg barangnya mas…

    tblbarang
    =========
    kodebarang PK
    namabarang
    satuan
    hargabeli
    hargajual

    tbltransmasuk
    =============
    nomasuk PK
    tanggal

    tbltranskeluar
    ============
    nokeluar PK
    tanggal

    tblrincimasuk
    ============
    nomasuk FK
    kodebarang FK
    jumlah
    hargabeli

    tblrincikeluar
    ===========
    nokeluar FK
    kodebarang FK
    jumlah
    hargajual

    cara biar tablenya bisa kebawan ma gak jd satu gmn ya mas,saia sudah coba cr di google tp gak ketemu”…

  18. June 15, 2011 at 7:15 am

    Yg jelas 1 variabel outputnya hanya bisa menampung 1 data, jadi memang enggak bisa menampung output seperti yg dimaksud.

    Coba solusi yg lain aja, atau langsung di program aja kan lebih flexsibel

  19. desylagi
    June 16, 2011 at 3:14 am

    saya gak bkn program mas,jd cman bljr aplikasi dr firebird aja sesuai tugas yang diminta dosen,dan menurut saia juga susah mngkn gak bisa membuat output seperti itu,tp krn di mysql bisa mknya dosen mngkn berpikir di firebird jg bisa,,,thank ya mas info nya…:)

    mas, kalau cr ngubah angka menjadi huruf di firebird gmn ya?

    output nya
    90.560 = sembilan puluh ribu limaratus enam puluh

    maaf ya mas klu terlalu bnyk bertanya, dan pertanyaan nya jg membingungkan….

    • June 16, 2011 at 6:10 am

      iya itulah firebird kalah banyak2xan fungsi dg mysql

      sy rasa untuk membuat terbilang bisa aja cuma ribet banget😀

  20. desylagi
    July 1, 2011 at 7:23 am

    mas mau tanya lg neh,,untuk menampilkan data dalam 1 tabel pake procedure gmn ya mas,,
    saya sudah mencoba seperti ini

    SET TERM ^;
    CREATE PROCEDURE tampildata
    RETURNS (
    kode int,
    nama varchar(10),
    satuan int,
    hargabeli int,
    hargajual int )
    AS
    BEGIN
    SELECT * from tblbarang
    into :kode, :nama, :satuan, :hargabeli, :hargajual;
    SUSPEND;
    END^
    SET TERM ;^
    EXECUTE PROCEDURE tampildata;

    tp datanya gak mau kluar,pdhal klu saya cek SELECT nya udh bener mas,,apa mngkn versi firebirdnya gak bisa keluarin bnyk data ya,,saya pake firebird2.1 super….
    saya sudah coba menambah kan FOR di SELECT dan juga DO BEGIN tp hasilnya hanya bisa keluar 1 data saja,gak bisa bnyk….
    mohon solusinya ya mas….:)

    • July 1, 2011 at 9:15 am

      coba seperti ini :

      SET TERM ^;
      CREATE PROCEDURE tampildata
      RETURNS (
          kode int,
          nama varchar(10),
          satuan int,
          hargabeli int,
          hargajual int )
      AS
      BEGIN
          FOR
              SELECT * from tblbarang
              into :kode, :nama, :satuan, :hargabeli, :hargajual
          DO
          SUSPEND;
      END^
      SET TERM ;^
      
  21. desylagi
    July 1, 2011 at 4:08 pm

    saya udh coba yg seperti ni juga mas,tp data yang kluar ttp cuman 1 saja,gak bisa bnyk,harusnya kan dgn suspend datanya bisa klr,apakah ada mslh sm versi firebirdnya ya mas?

    • July 1, 2011 at 9:41 pm

      Berarti cara penggunaannya yg kurang tepat mba, coba buat fungsi seperti ini :

      Private Function getBarang() As ADODB.Recordset    
          Dim Cmd     As ADODB.Command   
          
          Set Cmd = New ADODB.Command
          Cmd.ActiveConnection = Conn ' variabel koneksi
          Cmd.CommandText = "tampildata"
          Cmd.CommandType = adCmdStoredProc
          
          Set getBarang = Cmd.Execute        
          Set Cmd = Nothing       
      End Function
      

      Trus cara makenya :

      Dim rsBarang As ADODB.Recordset
                      
      Set rsBarang = getBarang
      Do While Not rsBarang.EOF
          Debug.Print rs("kode").Value & ", " & rs("nama").Value
      
          rsBarang.MoveNext
      Loop
      rsBarang.Close
      Set rsBarang = Nothing
      
  22. AngeL
    February 15, 2012 at 1:00 am

    Om, mf nih sblmny klo OOT. Mo tny. Kan klo Firebird pny fasilitas EXECUTE PROCEDURE. Nha klo d PostgreSQL, tau ga cara mgglny lwt VB6? Hee, ak ud nyari2 referensi tp blm nemu yg pas. Jd, mampir sini barangkali Om Suhu bs bantu.. Makasi sblmny y om,,

  23. AngeL
    February 15, 2012 at 9:57 am

    OKs om, laksanaken. Terima kasih om..😀

    • February 15, 2012 at 1:46 pm

      Oke sipp

      • AngeL
        February 16, 2012 at 4:36 am

        Ud bs om, merujuk link yg ke-2. Betewe, ad tantangan lg ni om.. Ad tips ga om, klo mo eksekusi perintah “SELECT * FROM” pada tabel yg datany bnyk biar cpt? Ak ud pake embel2 LIMIT tp ttp lama e om.:-/

        • February 16, 2012 at 3:54 pm

          Coba dikasih index om, field-field yg sering dijadikan kriteria pencarian.
          Misal di tabel Mahasiswa field Nim dan Nama dikasih index

          • AngeL
            February 17, 2012 at 9:00 am

            Sukses om, less than 1s u/ row d ats 500rb😉 Maturnuwun sanget nggih om,,😀 Ak kira it’s impossible d postgre, tnyt bs, alhamdulillah.

            • February 17, 2012 at 10:01 am

              Oke om sippp mantebbb🙂

  24. May 8, 2012 at 10:43 pm

    artikel firebird masih jarang… thanks ya udah posting artikel ini….

    • May 10, 2012 at 8:50 am

      Sama2x om

  25. Chandra
    April 25, 2013 at 2:50 pm

    Mas Admin mau tanya, ttg SP di mysql 5.0 sy mau mengambil tgl dan jam dari server mysql
    Sya sudah buat SP dgn nama GetDateServer

    CREATE PROCEDURE `GetDateServer()`()
    BEGIN
    select curdate();
    END

    Pada saat di panggil kok hasilnya string kosong ya.

    Set rs = cn.Execute(“GetDateServer()”)
    lblip.Caption = rs.Fields(0).Value
    hasilnya =”” —> yang diharapkan ‘2013-04-25’

    Mohon pencerahannya mas Admin

    • April 25, 2013 at 9:34 pm

      Coba pake function om :

      DELIMITER $$
      
      CREATE FUNCTION `GetDateServer`() RETURNS DATE
      BEGIN
      	RETURN CURRENT_DATE;
      END$$
      
      DELIMITER ;
      

      Cara pemanggilan :

      Set rs = cn.Execute("SELECT GetDateServer()")
      lblip.Caption = rs.Fields(0).Value
      
      • Chandra
        April 26, 2013 at 9:08 am

        Mas Admin, sy coba fungsi itu, kok hasilnya sama saja ya string kosong alias “” kenapa ya, jadi bingung sendiri nih.
        sy menggunakan mysql versi 5.0 dan vb6.
        mohon pencerahannya kembali ya mas…..

        • April 26, 2013 at 9:30 am

          Ini sy coba lagi nampil kok tanggalnya :

          Public Sub Main()
              Dim conn    As ADODB.Connection
              Dim strCon  As String
              
              Set conn = New ADODB.Connection
              conn.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;DATABASE=db_tess;UID=root;PWD=password_root;OPTION=3"
              conn.Open
              
              Dim rs As New ADODB.Recordset
              rs.Open "SELECT GetDateServer()", conn, adOpenForwardOnly, adLockReadOnly
              If Not rs.EOF Then
                  MsgBox "Tanggal : " & rs.Fields(0).Value
              End If
          End Sub
          
          • Chandra
            April 26, 2013 at 3:29 pm

            Mas bro, apakah pemanggilan SP harus menggunakan ADODB..??
            Karena metode pemanggilan sy sbb:
            dim cn As New MYSQL_CONNECTION
            Dim rs As New MYSQL_RS
            Call cn.OpenConnection(“127.0.0.1”, “test”, “test123”, “perpustakaan”, “3306”, CLIENT_COMPRESS)

            Set rs = Nothing
            Set rs = cn.Execute(“SELECT GetDateServer()”)
            If Not (rs.EOF) Then
            MsgBox “Tanggal ” & rs.Fields(0).Value
            End If

            Jika di tracing hasilnya, kondisi (rs.eof) selalu true, sehingga hasilnya kosong.

            apakah memang harus menggunakan metode adodb saja..???

            mohon pencerahannya mas Admin

            • April 26, 2013 at 3:45 pm

              Sy malah enggak pernah make library VB MySQL Direct jadi ya blm bs bantu

  1. April 16, 2014 at 9:13 am
Comments are closed.
%d bloggers like this: