Melaksanakan set rekod borang boleh dikemas kini menggunakan prosedur tersimpan
P粉086993788
P粉086993788 2023-09-13 14:06:48
0
1
589

  1. 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.

  2. 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:

  3. 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
  4. 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.

  5. 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.

P粉086993788
P粉086993788

membalas semua(1)
P粉043470158

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.

  1. Cuba gunakan kaedah .Klon dan bukannya mod salin manual untuk membuat salinan set rekod asal.
  2. Sahkan bahawa kawalan kotak semak pada borang diikat dengan betul pada medan set rekod dan membenarkan kemas kini.
  3. Pertimbangkan untuk menggunakan jenis kursor yang berbeza, seperti adOpenKeyset, untuk memberikan lebih fleksibiliti dalam mengemas kini data.

Semoga ia membantu!

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan