Memprogram Basis LibreOffice. Bagian 2

Bagian 2 akan membahas hubungan antara tabel dan formulir basis data. Secara khusus, cara mendefinisikan hubungan antara dua tabel dan menggunakan "tabel referensi" sebagai sumber data untuk daftar drop-down.

Versi OpenOffice dan LibreOffice yang pesannya relevan dari 3.0 hingga 6.2 (versi LibreOffice saat ini). Dimulai dengan versi 3.0, OpenOffice Base memiliki kemampuan untuk menyimpan skrip dalam file database (dengan ekstensi .odb), yang memudahkan untuk mendistribusikan kode makro OO Basic

Ada beberapa kebingungan dengan formulir di Pangkalan OpenOffice. Faktanya adalah bahwa dalam proses evolusi perangkat lunak dari office suite ke lingkungan basis data, ternyata Formulir, Formulir, Formulir dan Formulir agak berbeda. Dan Formulir bukan hanya Formulir. Saya akan jelaskan lebih detail.

Ketika Anda membuka database OpenOffice Base dalam mode pengeditan, Anda melihat empat bookmark di sisi kiri layar. Dalam versi Rusia, akan terdengar seperti

  • Tabel
  • Pertanyaan
  • Bentuk
  • Laporan

Dalam pengertian ini, Formulir adalah aplikasi terpisah yang berjalan di jendela terpisah. Saya juga mencatat bahwa sebenarnya ini adalah jendela di mana instance OpenOffice Writer diluncurkan.

Catatan Karena form tersebut sebenarnya adalah instance dari OpenOffice Writer - Anda dapat membuat aplikasi tanpa memuat komponen OpenOffice Base - tepat di OpenOffice Writer.

Setiap Formulir memiliki koleksi Bentuk objek Bentuk. Pada awalnya, koleksi ini kosong. Meskipun demikian, Anda dapat membuka dan menutup Formulir. Dan bahkan menampilkan informasi teks di dalamnya. Dan hanya ketika Anda menambahkan kontrol baru (misalnya, Tombol), sistem akan membuat objek Formulir dengan Formulir nama default, jika Anda belum membuat objek seperti itu sendiri pada saat itu.

Akan lebih mudah untuk membuat Formulir baru dari Navigator Formulir (ditampilkan pada palet sebagai kompas), yang juga dapat dipanggil dari menu Lihat | Bilah Alat | Navigasi Formulir. Objek formulir dibuat baik di tingkat atas dalam koleksi Formulir, atau di bawah objek Formulir lain. Ini tidak memengaruhi tampilan Formulir, tetapi bisa bermanfaat saat mendefinisikan hubungan antar tabel.

Tangkapan layar
gambar


Di sini kita harus mencatat satu anomali dari objek Form. Objek ini terutama merupakan objek yang terkait dengan tabel database atau dengan kueri SQL. Anda bisa menganggap Form sebagai objek ResultSet (seperti apa adanya). Formulir, di sisi lain, adalah wadah untuk kontrol, seperti FORMULIR dalam dokumen HTML (dan ini juga benar).

Buka Formulir yang baru dibuat dalam mode edit (tombol kanan mouse | Edit). Buat objek Formulir baru di dalamnya dengan nama Formulir, atau nama lain yang Anda suka. Dalam elemen Formulir ini, buat elemen Bentuk anak.

Setiap Formulir perlu dikaitkan dengan tabel database, kueri, atau kueri SQL yang ada. Anda dapat menetapkan aturan dalam subformulir sehingga data yang difilter menurut nilai bidang terkait tercermin dalam Formulir utama sebagai tipe Master / Slave. Untuk melakukan ini, di editor properti dari Formulir bawahan, isi bidang master tautan dan tautan properti bidang budak.

Sekarang kita akan menambahkan elemen Kontrol Tabel ke masing-masing Formulir dengan memilih Formulir yang sesuai di Form Navigator>. Elemen Kontrol Tabel tidak ada di panel elemen yang tersedia. Untuk menampilkan daftar elemen yang diperluas, Anda perlu mengaktifkan tombol More Controls di palet elemen. Setelah menambahkan elemen Kontrol Tabel, perlu untuk memasuki mode pengeditan elemen ini dan menambahkan kolom yang diperlukan untuk tampilan tabel (tombol mouse kanan -> Sisipkan / Ganti / Hapus Kolom)

Tipe kedua adalah tipe hubungan yang sering dijumpai dalam praktik di antara tabel (setelah Master / Slave), dan yang akan kami pertimbangkan - hubungan tipe Direktori. Kami menyimpan dalam tabel data kunci objek GUID, peningkatan otomatis, dan dalam tabel yang ditampilkan kami menampilkan nama lengkapnya, diambil dari tabel tertaut, "direktori". Ada mekanisme yang nyaman untuk ini. Di Desainer Tabel visual, tambahkan kolom jenis Kotak Daftar. Jika kolom tipe Numeric / Teks telah dibuat di mana kunci ditampilkan (dan bukan nama), dimungkinkan untuk mengubah tipenya menjadi Daftar Kotak (klik kanan | Ganti Dengan | Kotak Daftar). Selanjutnya, edit daftar properti kolom. Pada tab data, setel properti Tipe Konten Daftar ke SQL. Kueri dalam properti Konten Daftar harus berisi nilai yang ditampilkan di kolom pertama, dan properti Bidang Terikat akan menjadi indeks kolom dengan bidang kunci (dengan asumsi bahwa kolom pertama memiliki indeks 0). Artinya, di sebagian besar kueri ini akan menjadi 1 untuk kueri tipe

SELECT USERNAME, USERID FROM USERS ORDER BY USERNAME 

Sejauh ini, pekerjaan telah dijelaskan dalam mode konfigurator tanpa pemrograman. Tambahkan fungsionalitas dengan makro OO Basic.

Buat filter untuk tabel database dengan nilai yang dimasukkan dalam kotak teks. Untuk melakukan ini, kami menulis dalam bahasa OO Basic prosedur yang memproses acara dari keyboard.

  Sub TextBox_onKeyUp(oEvent) oDocument = ThisComponent oDocument.LockControllers sText = oEvent.Source.text if Len(sText) > 3 Then oForm = ThisComponent.Drawpage.Forms.getByName("MyForm") oForm.Filter = "USERNAME LIKE '" + sText + "%'" oForm.reload() End If oDocument.UnlockControllers End Sub 

Kami mengaitkan prosedur ini dengan peristiwa yang dirilis kunci dari bidang teks (pada tab acara dari daftar properti elemen). Perhatikan bahwa bidang teks ini harus terletak di Formulir lain (bukan di tempat filter ditumpangkan), sehingga memuat ulang oForm.reload () tidak "membatalkan" nilai saat ini yang dimasukkan dari keyboard.

Untuk dilanjutkan.

Source: https://habr.com/ru/post/id445304/


All Articles