Saya cuba menyediakan borang menggunakan set rekod berdasarkan prosedur tersimpan pada pelayan MySQL. Apabila saya menggunakan objek arahan maka Set Me.Recordset = cmd.execute
ia berfungsi dengan baik, tetapi saya perlu dapat mengemas kini dua medan (tinyint dan varchar) yang terikat pada kotak semak dan kotak teks pada borang saya. Sudah tentu, ini tidak berfungsi.
Memandangkan masalah reka bentuk ini, saya cuba membuka set rekod menggunakan kaedah .Buka dan "CALL procName
('value1', 'value2'); dan kemudian mencipta set rekod baru yang terputus daripada .Open Corak diisi dalam kaedah, dan kemudian rekod digelung dan dilampirkan pada rs baharu. Akhir sekali, tetapkannya sebagai set rekod borang seperti ini:
Dim OriginalRecordset As ADODB.Recordset Dim Field As ADODB.Field Set NewRecordset = New ADODB.Recordset Set OriginalRecordset = New ADODB.Recordset OriginalRecordset.Open "CALL `DosarClient_Functie` ('14575','2234');", SQL_ADE.Conn, adOpenDynamic, adLockPessimistic, adCmdText For Each Field In OriginalRecordset.Fields NewRecordset.Fields.Append Field.Name, Field.Type, Field.DefinedSize, adFldIsNullable Or adFldUpdatable Next Field NewRecordset.CursorType = adOpenDynamic NewRecordset.CursorLocation = adUseClient NewRecordset.LockType = adLockOptimistic NewRecordset.Open OriginalRecordset.MoveFirst Do Until OriginalRecordset.EOF NewRecordset.AddNew For Each Field In OriginalRecordset.Fields If Not IsNull(Field.value) Then NewRecordset.Fields(Field.Name).value = Field.value Else End If Next Field NewRecordset.Update OriginalRecordset.MoveNext Loop Set Me.Recordset = NewRecordset
Maklumat tambahan: Pembolehubah NewRecordset diisytiharkan peribadi di peringkat borang. Saya juga tahu adalah amalan buruk untuk memanggil prosedur seperti yang saya lakukan, tetapi saya tidak dapat memikirkan cara lain untuk menyelesaikan tugas ini.
Penting: Saya tidak boleh dan tidak mahu menggunakan jadual tempatan. Itu akan menjadi penyelesaian yang mudah, tetapi ia juga tidak konsisten dengan kod yang lain. Terima kasih :)
Masalahnya ialah: jika saya melakukan seperti yang saya jelaskan, saya mendapat ralat #Name untuk medan terikat, atau ia ditetapkan sebagai set rekod dan saya boleh menukar nilainya, tetapi saya tidak melihat nilai awal.
Daripada apa yang saya faham, anda telah mencuba pelbagai pendekatan, seperti mencipta set rekod baharu dan menyalin skema daripada set rekod asal, tetapi anda masih tidak boleh mengemas kini medan kotak semak yang terikat pada borang.
Menggunakan prosedur tersimpan dengan cara ini boleh mencabar, saya syorkan anda menguji secara individu sama ada prosedur tersimpan yang anda panggil membenarkan kemas kini.
Semoga ia membantu!