Saya baru-baru tua Warisan visual basic 6 / kristal laporan proyek yang menghubungkan ke server sql database. Pesan kesalahan saya mendapat (Kesalahan # -2147191803 A String diperlukan di sini) saat mencoba menjalankan proyek tampaknya dipersempit ke. Printout perintah di kode berikut:
'Login ke database Set Tabel = Report.Database.Tables Set Tabel = Tables.Item (1) Table.SetLogOnInfo ConnName, dbname, user, pass Domainname = CStr (dipilih) 'Set parameter Fields 'Deklarasi parameter pemegang Set ParamDefs = Report.ParameterFields 'Store parameter objek Untuk Setiap ParamDef Dalam ParamDefs Dengan ParamDef MsgBox ( "domainname:" + domainname) Select Case. ParameterFieldName Case "Nama Perusahaan" . SetCurrentValue Domainname Akhir Pilih Select Case. Nama Kasus "(? Company Name)" . SetCurrentValue Domainname Akhir Pilih 'Bendera untuk melihat apa yang ditetapkan ke nilai sekarang MsgBox ( "paramdef:" + ParamDef.Value) Akhir Dengan Berikutnya Report.EnableParameterPrompting = False Screen.MousePointer = vbHourglass 'CRViewer1.ReportSource = Laporan 'CRViewer1.ViewReport test = 1 Report.PrintOut ** ** test = test + 3 currenttime = Str (Now) currenttime = Ganti (currenttime, "/", "-") currenttime = Ganti (currenttime, ":", "-") Domainname = Ganti (domainname, ".", "") startName = mPath + "\ crysta ~ 1.pdf" endName = mPath + "\" + domain + "\" + domain + "" + currenttime + ". pdf" rc = MsgBox ( "Tunggu pekerjaan PDF selesai", vbInformation, "H / W Report") Nama startName Sebagai endName Screen.MousePointer = vbDefault End If
Selama lari, bentuk muncul, yang ParamDef menetapkan variabel "nama perusahaan" dan ketika sampai di garis yang Report.PrintOut petunjuknya untuk mencetak, itu melempar kesalahan. I'm guessing laporan kristal tidak menerima "Company Name" untuk benar menjalankan laporan kristal. Apakah ada orang yang tahu cara untuk mendiagnosis ini ... baik di VB6 atau laporan kristal sisi untuk menentukan apa yang saya hilang di sini?
thanks in advance!
UPDATE:
- dimasukkan CStr (dipilih) untuk memaksa domainname untuk menjadi string
- msgboxes dimasukkan ke dalam untuk loop di atas dan di bawah. setcurrentvalue baris
- dimasukkan Kasus "(? Perusahaan Nama)" pernyataan untuk melihat apakah yang membantu pengaturan nilai
- mencoba. AddCurrentValue dan. SetCurrentValue fungsi seperti yang disarankan oleh situs-situs forum lain
- memutuskan bahwa itu .. environement perkembangan saya dimuat di komputer lain dengan VB6 yang sama persis laporan kristal 8,5 berjalan di WinXP sp2 prof dan kesalahan yang sama muncul.
dan ketika saya menjalankan MsgBox (ParamDef.Value) dan juga muncul kosong hilang dengan string yang sama kesalahan. Saya juga tidak bisa menemukan dokumentasi pada kelas craxdrt.ParameterFieldDefinition untuk melihat apa yang tersembunyi fungsi lain yang tersedia. Ketika saya melihat daftar metode dan properti variabel, tidak daftar SetCurrentValue sebagai salah satu fungsi.
Any ideas on this?
Any ideas on this?
thanks lagi di muka
Berikut adalah cara saya menetapkan parameter pada Crystal (yang datang bersama. NET - tidak tahu apakah itu membantu Anda).
Dim dv As New ParameterDiscreteValue
dv.Value = showphone
rpt.ParameterFields("showphone").CurrentValues.Add(dv)
terima kasih tapi itu tidak benar-benar membantu. cara set paramters tampaknya benar-benar berbeda. NET #:27406 phill |
dipilih adalah string input variabel yang diambil dari formulir dengan drop-down pilih kotak. Aku sebelumnya menempatkan kotak pesan di sana untuk memastikan adanya variabel melewati tepat sebelum Report.Printout dan itu tidak muncul. Domainname variabel ini juga dinyatakan sebagai tipe string.
Berapakah nilai dari variabel yang dipilih?
Table.SetLogOnInfo ConnName, dbname, user, pass
Domainname = dipilih
'Set parameter Fields
Domainname = dipilih
'Set parameter Fields
Jika tidak sebuah string, maka yang mungkin menjadi masalah. Kristal mengharapkan sebuah string variabel dan ketika ia tidak menerima apa yang diharapkan, ia melempar kesalahan.
Berikut ini adalah contoh hidup menetapkan parameter yang kita gunakan:
For Each CRXParamDef In CrystalReport.ParameterFields
Select Case CRXParamDef.ParameterFieldName
Case "@start"
CRXParamDef.AddCurrentValue CDate("1/18/2002 12:00:00AM")
Case "@end"
CRXParamDef.AddCurrentValue Now
End Select
Next
Ini sebenarnya adalah contoh yang ditulis dalam VBScript untuk Crystal 8,5 pencetakan laporan, tetapi sintaks adalah sama untuk VB6
Dari sudut pandang Anda harus mendapatkan pesan kesalahan yang sama jika Anda membuka laporan dalam Laporan Crystal Perancang dan beralih ke modus pratinjau. The Designer harus juga menunjukkan Anda pesan dengan lokasi yang tepat dari masalah, misalnya bidang yang tidak dapat diperlakukan sebagai string.
Masalahnya bukanlah bahwa lapangan lebih dari 255 byte tidak dapat dicetak. Masalahnya adalah bahwa suatu bidang lebih dari 255 byte tidak dapat digunakan dalam formula, sebagai semacam kriteria ...
Aku menambahkan sebuah field untuk tampilan di sql server 2005 database dan memverifikasi laporan menentangnya yang melakukannya dengan tidak ada kesalahan. Apakah itu ada hubungannya dengan masalah saya?
Hal ini dapat terjadi dalam laporan kristal 8,5 jika Anda mengubah panjang kolom string yang Anda gunakan dalam laporan Anda sehingga melebihi 255 byte. Ini dapat juga terjadi jika Anda mengubah tipe kolom dari varchar ke nvarchar (double byte string!)
Alasan untuk ini adalah bahwa laporan kristal 8,5 memperlakukan semua senar lebih dari 255 bytes sebagai memo field.
Saya menyarankan youe upgrade ke laporan kristal XI - API tidak berubah banyak.
Aku akan memeriksa ke dalam kolom tipe variabel. Sedangkan untuk upgrade, saya sudah mencoba menjalankannya dalam laporan kristal xi dan itu menghasilkan runtime error. Hal ini ada hubungannya dengan Crystal Report Engine Perpustakaan dll yang dirubah somwhere antara dua versi thanks for the suggestion! #:27216 phill |
Aku ingin tahu apakah saya akan lebih mudah mengubah kode ini untuk vb.NET?
Tidak ada komentar:
Posting Komentar