Senin, 18 April 2011

Merubah Kolom pada Grid dalam Visual Basic 6

Kemarin saya kesulitan merubah kolom pada Grid dalam program VB6 yang saya buat. Ketika cari-cari, saya dapat menemukan, namun dalam bahasa Thai, jadi kalau diterjemahkan bahasanya agak nyaco, tapi biarlah, bahasa komputer kan universal, biar pakai bahasa yang belepotan juga masih bisa paham asal syntax (source code) nya benar

Penggunaan dasar MS FlexGrid pertama membangun Satu Untuk Banyak

Mulai proses bekerja.

Proyek -> Referensi ...


Proyek - Komponen> ...


Desain Time.
modDataBase.bas hidup modul (datang lagi) ... 55.555 +.


Option Explicit.

Global ConnDB Sebagai ADODB.Connection Baru.
Global RS Sebagai ADODB.Recordset Baru.
Global DS Sebagai ADODB.Recordset Baru.
Global Pernyataan As String.
Global SQLStmt As String.
'.
'Apakah menambahkan atau mengedit data.
Global blnNewData Sebagai Boolean.
'Update untuk bentuk transisi.
Global FormUpdate Sebagai Boolean.

'Hubungkan ke file database MS Access.
Public Sub OpenDataBase ().
Pada Err_Handler GoTo Error.
DB_File As String Dim.
DB_File = App.Path.
Jika Hak $ (DB_File, 1) <> "\\" Kalau DB_File = DB_File & "\\".
DB_File = DB_File & "ProductDB.MDB".
'Buka koneksi.
Set ConnDB = ADODB.Connection Baru.
ConnDB.ConnectionString = _.
"Provider = Microsoft.Jet.OLEDB.4.0;" & _.
"Data Source =" & DB_File & ";" & _.
"Bertahan Info Security = False".
ConnDB.Open.
Exit Sub.

Err_Handler:.
MsgBox "Error:" & Err.Number & "" & Err.Description.
Akhir.
End Sub.

Public Sub CloseDataBase ().
Pastikan bahwa ada link - Sambungkan data atau tidak.
Jika adStateOpen = ConnDB.State Kemudian.
ConnDB.Close.
Set ConnDB = Tidak ada.
End If.
End Sub.



Query - hubungan koneksi Produk tabel (tblProduct) unit dari tabel (tblUnit) ... saya bekerja benar-benar offline.

Kemudian, pilih Lihat Query SQL Pernyataan dan cut paste ke dalam Visual Basic 6 setelah itu

SELECT tblProduct.ProductPK, tblProduct.ProductCode, tblProduct.Description, tblUnit.UnitName, tblProduct.PriceUnit
DARI tblProduct INNER JOIN ON tblUnit tblUnit.UnitPK tblProduct.UnitFK =.


- Anda mengatakan semua sepanjang bahwa offline besar pertama (0) harus dibawa ke tersembunyi Primer dari Pengguna.
- Primer Kode kunci tidak diperlukan. (ProductCode) dengan offline.

Kode untuk menemukan kode produk tblProduct tabel ... Aku hanya menunjukkan offline bagian.


'=================================================. =====.
'Set properti dari FlexGrid MS dalam bentuk Run Time.
'=================================================. =====.
Sub SetupGrid ().
Dengan fgData.
FixedRows = 1..
FixedCols = 0..
'The 7 digit.
Cols = 7..
'Baris pertama (untuk Kolom Header).
Rows = 1..
ColWidth (0) = 0..
ColWidth (1) =. Lebar \\ 6 -. 100.
ColWidth (2). =. Lebar \\ 6 + 250.
ColWidth (3) =. Lebar \\ 6 -. 200.
ColWidth (4) Lebar =. \\ 6 -. 100.
ColWidth (5) =. Lebar \\ 6 -. 200.
ColWidth (6). =. Lebar \\ 6.

TextMatrix (0, 0) = "PK"..
TextMatrix (0, 1). = "Kode."
TextMatrix (0, 2) = "Nama"..
TextMatrix. (0, 3) = "menghitung unit."
TextMatrix. (0, 4) = "harga".
TextMatrix. (0, 5) = "dari" entri utama 'dalam hal ini
TextMatrix. (0, 6) = "jumlah".
End Dengan.

End Sub.

'=================================================. =====.
'Insiden Cari Kode dengan menekan Enter.
'=================================================. =====.
Private Sub txtSearch_KeyPress (KeyAscii As Integer).
Jika vbKeyReturn = KeyAscii Kemudian.
Call CheckDataRow.
End If.
End Sub.

'=================================================. =====.
Periksa nilai 'dalam MS FlexGrid pertama untuk menampilkan daftar baru.
'=================================================. =====.
Private Sub CheckDataRow ().
CurrentRow As Integer Dim.

'Pastikan itu kosong atau tidak. Jika keluar dari subprogram (Pengguna tidak informasi tidak tombol apapun.)
Jika Trim (txtSearch.Text) = "" Atau Len (Trim (txtSearch.Text)) = 0 Then.
txtSearch.SetFocus.
Exit Sub.
End If.

Menemukan data pada Tabel Kode Produk (tblProduct).
'Beberapa orang tidak bisa memahami bagian itu. Aku kembali untuk membaca artikel di VB6 dengan Access.
"Sejak offline saya pertama kali. Karena tidak datang dari buku-buku. Tapi dari pengalaman saya, murni.
Set RS = New Recordset.
Pernyataan = "SELECT tblProduct.ProductPK, tblProduct.ProductCode," & _.
"TblProduct.Description, tblUnit.UnitName, tblProduct.PriceUnit" & _.
"DARI tblProduct INNER JOIN ON tblUnit tblProduct.UnitFK = tblUnit.UnitPK" & _.
"WHERE ProductCode =" & "'" & Trim $ (txtSearch.Text) & "'".

'Tunggu sampai jelas nilai.
txtSearch.Text = "".

RS.CursorLocation = adUseClient.
'Data Search membutuhkan read-only maju. Akan memungkinkan untuk akses data yang lebih cepat ... jangan lupa.
RS.Open Statement, ConnDB, adOpenForwardOnly, adLockReadOnly, adCmdText
'Data dari sub-program itu sama sekali.
Jika RS.RecordCount = 0 Then.
RS.Close: Set RS = Tidak ada.
Exit Sub.
End If.


'Mulai pencarian dalam kotak tabel.
Untuk CurrentRow = 1 Untuk fgData.Rows - 1.
Cari kode produk dalam satu utama.
Jika fgData.TextMatrix (CurrentRow, 1) = RS ("ProductCode") Kemudian.

'Jika sebuah produk dimasukkan ke dalamnya beberapa produk langsung naik di baris saat ini.
fgData.TextMatrix (CurrentRow, 5) = Val (fgData.TextMatrix (CurrentRow, 5)) + 1.

"Dikalikan harga. Jumlah produk menjadi baru
fgData.TextMatrix (CurrentRow, 6) = Format (Val (fgData.TextMatrix (CurrentRow, 4)) * _.
Val (fgData.TextMatrix (CurrentRow, 5)), "0.00").

RS.Close: Set RS = Tidak ada.

'Subprogram untuk menghitung jumlah total.
Call CalTotalAmount.

'Akhir UNTUK loop dan keluar sub untuk secara offline.
Exit Sub.
End If.
Berikutnya.

'=================================================.
'Membawa deskripsi produk ke dalam tabel grid, cukup yakin.
'=================================================.
'Meningkatkan jumlah baris dalam MS FlexGrid untuk 1 baris
fgData.Rows = fgData.Rows + 1.

'The baris saat ini, turun 1 (untuk menghindari Header Kolom).
CurrentRow = fgData.Rows - 1.

'Sebuah baris baru yang ditambahkan. Dibaca ke dalam recordset.
'Normal digit pertama (dalam 0) untuk membawa keluar tersembunyi Kunci utama untuk offline ... saya tidak pernah lupa.
fgData.TextMatrix (CurrentRow, 0) = RS ("ProductPK").
'Kode Lihat.
fgData.TextMatrix (CurrentRow, 1) = "" & RS ("ProductCode").
'Tampilkan Nama Produk.
fgData.TextMatrix (CurrentRow, 2) = "" & RS ("Keterangan").
'Tampilkan produk.
fgData.TextMatrix (CurrentRow, 3) = "" & RS ("UnitName").
Tampilkan harga.
fgData.TextMatrix (CurrentRow, 4) = Format (RS ("PriceUnit"), "0.00").
'Masukkan jumlah produk masing-masing.
fgData.TextMatrix (CurrentRow, 5) = 1.
'Harga dihitung nomor.
fgData.TextMatrix (CurrentRow, 6) = Format (fgData.TextMatrix (CurrentRow, 4) * _.
fgData.TextMatrix (CurrentRow, 5), "0.00").

RS.Close: Set RS = Tidak ada.

'Subprogram untuk menghitung jumlah total.
Call CalTotalAmount.

End Sub.

'=============================================.
'Hitung harga total dari semua
'=============================================.
Sub CalTotalAmount ().

Jika tidak, maka daftar keluar semua subprogrammes.
Jika fgData.Rows = 1 Kemudian Keluar Sub.

Dim i As Integer.
TotalAmount Sebagai Double Dim.

'Hitung jumlah baris ke jaringan yang ada meja sampai terakhir.
' แล้วรวมค่าในหลักที่ 6 ไว้ในตัวแปรเวียนแทียน TotalAmount ... 55555+
Untuk i = 1 Untuk fgData.Rows - 1.
TotalAmount = TotalAmount + Val (fgData.TextMatrix (i, 6)).
Berikutnya.

lblTotalAmount.Caption = Format (TotalAmount, "#,## 0.00 ").

End Sub.

Mari kita kembali ke daerah melihat offline semua...Hal ini. Masih prinsip. Cara berpikir seperti aslinya. Tapi hal utama yang ditambahkan sebagai gantinya. (Seperti yang disebutkan sebelumnya pra) adalah untuk menciptakan sebuah Recordset untuk menemukan kode produk, benar-benar. Dalam tabel data. Dalam rangka untuk membandingkan nilai-nilai (saya cek = offline).Karena dalam kasus ini, kita tidak akan menggunakan SEJENISNYA (waktu saya akan mengatakan lagi ... sehingga adik offline) ... aku tahu lalu apa. Apakah itu tidak cukup dingin, kita perlu pin grid cerdas, dapat skala ke meja. Masukkan data ke dalam garis utama yang kita butuhkan, akan lebih baik... Apakah diambil dari artikel yang saya tulis untuk kemudian offline ... Itu Dampak Dampak heheheh.

Kode grid ya ampun perut anak ajaib persegi dibuat sederhana. Dapat memasukkan data mungkin.
Baca panduan untuk desain dan kreativitas untuk grid tabel untuk memasukkan data ... di sini


'=============================================.
'Acara (Event) Fokus pada mana di Sel.
'=============================================.
Sub fgData_EnterCell ().
Pilih fgData.Col Kasus 'untuk memilih Kolom.
Kasus 0, 1, 2, 3, 4, 6: "Kami tidak memasukkan data dalam besar tertentu.
txtData.Visible perlu = False 'memerintahkan penutupan txtData visi.


Kasus 5: 'OK, Anda benar Cell Fokus pada core 5, akan memulai proses kerja.
txtData.Visible = True 'Buka txtData terlihat.
txtData.Text nilai asli = fgData.Text 'di Cell akan diteruskan ke txtData untuk melanjutkan pengeditan.

"Langkah ini adalah promosi txtData untuk pergi alih posisi atas Cell (prinsip), seperti yang kita inginkan.
'The bergerak dengan lokasi fgData.Move kiri, lokasi, lebar dari sel, tinggi sel.
txtData.Move fgData.CellLeft + 60, fgData.Top + fgData.CellTop, fgData.CellWidth, fgData.CellHeight.

Ketika bergerak alih posisi Cell txtData kita ingin pergi ke txtData Fokus untuk bisa mengedit data dalam TextBox.
txtData.SetFocus.
End Pilih.

End Sub.

Bila nilai pada perubahan TextBox di Cell TextBox mengambil alih, ia harus berubah dengannya.
Private Sub txtData_Change ().
SRow As Integer Dim.
'Cari lokasi baris.
sRow = fgData.Row.

' เมื่อ txtData เกิดการเปลี่ยนแปลง ก็จะส่งค่าให้กับ Cell ที่เราต้องการด้วย
'Tapi seperti yang sekarang kita masih tidak melihat benar sekarang karena txtData di atas ke Sel - Sam Ma Aku pentingnya ini.
'Nilai di TextBox tidak dapat null atau 0 ... jika itu adalah untuk meletakkan murah hati.
Jika Trim (txtData.Text) = "" Atau Len (Trim (txtData.Text)) = 0 Atau txtData.Text = "0" Kalau begitu txtData.Text = "1".

fgData.TextMatrix (sRow, 5) txtData.Text =.
'Hitung harga dan kuantitas.
fgData.TextMatrix (sRow, 6) = Format (fgData.TextMatrix (sRow, 4) * fgData.TextMatrix (sRow, 5), "0.00").

'Subprogram untuk menghitung jumlah total.
Call CalTotalAmount.

End Sub.

Private Sub txtData_GotFocus ().
'Subprogram untuk Light Tinggi di TextBox tersebut.
Call HLText (txtData).
End Sub.

'Perangkap tekan tombol pada TextBox.
Private Sub txtData_KeyDown (kode kunci As Integer, Shift As Integer).
Pilih Kasus kode kunci.
Kasus vbKeyDown.
SendKeys "{DOWN}".
Call txtData_KeyPress (vbKeyReturn).
Kasus vbKeyUp.
SendKeys "{UP}".
Call txtData_KeyPress (vbKeyReturn).
Kasus vbKeyEscape.
Call txtData_KeyPress (vbKeyReturn).
End Pilih.
End Sub.

Private Sub txtData_KeyPress (KeyAscii As Integer).
Jika vbKeyReturn = KeyAscii Kemudian.
txtData.Visible = False.
KeyAscii = 0.
Else.
Review nomor kunci saja.
KeyAscii = CheckDigitOnly (KeyAscii).
End If.

End Sub.

'=================================================. =========.
"Mereka yang fungsional, kita perlu sering digunakan. Harus disimpan dalam Modul lebih baik offline.
'=================================================. =========.
'Periksa untuk input numerik saja.
Fungsi CheckDigitOnly (Index As Integer) As Integer.
Select Case Index.
Kasus 48 Untuk 57 '0 - 9.
Kasus 8 'Back Space.
Kasus 13 'Enter.
Case Else.
Index = 0.
End Pilih.
CheckDigitOnly = Indeks.
End Function.

'Subprogram ke Tinggi Cahaya dalam hubungannya dengan TextBox ... GotFocus.
Public Sub HLText (ByRef sText).
On Error Resume Next.
Dengan sText.
SelStart = 0..
SelLength =. Len (sText.Text).
End Dengan.
End Sub.

sumber : citeclub.org

Artikel Terkait



1 komentar: