PDA

View Full Version : کار با کریستال در شبکه



tdodangeh
شنبه 07 اردیبهشت 1387, 11:46 صبح
برنامه ای را با VB6 و Accessو گزارشات با کریستال ریپورت 9 نوشته ام، برنامه بدون مشکل روی سیستم خودم کار می کند اما زمانی که برنامه به سیستم دیگری که قرار است هم به عنوان Server باشد و هم کاربر، نصب میشود و دو کاربر دیگر نیز از این سیستم قرار است استفاده کنند و گزارشات را ببینند با کلیک روی هر یک از گزارشات برنامه پیغام خطای Failed to open Document و TLV Record Error را می دهد و برنامه را می بندد.لطفا راهنمایی بفرمایید.

sm
یک شنبه 15 اردیبهشت 1387, 11:20 صبح
كدتون رو بزارين اينجا
حتما شما مسيرهاتون رو مطلق دادين كه اين مشكل ايجاد شده.
ممكنه از مسير بانكتون هم باشه

موفق باشيد

tdodangeh
چهارشنبه 18 اردیبهشت 1387, 08:03 صبح
برنامه را به همراه DataBase و کد برنامه و گزارشات ضمیمه کرده ام ، در صورت مشکل بفرمایید صرفا کد مورد نیاز را به همراه توضیحات ارسال کنم، برنامه با نام کاربری و رمز عبور a شروع به کار خواهد کرد، بانک اطلاعاتی و پوشه Report باید در مسیر برنامه قرار بگیرد. البته من Pakege برنامه و برنامه نصبی را با Pakege&Development خود VB ساخته ام و من Merge Module ها را نیز روی سیستم خودم Download کرده ام، و 5 تا فایل آن را نیز در زمان ساختن Setup به آن Add کرده ام.رمز Database برابر Adonis می باشد.باز هم از راهنمایی های شما ممنونم.

sm
دوشنبه 23 اردیبهشت 1387, 08:30 صبح
خوب نيازي به نگاه كردن برنامه نيست از توضيحات شما مشخصه كه اشتباه از كجاست!
شما بايد گزارشتون رو به عنوان يه متغير توي برنامه اضافه كنين.
من قبلا در اين مورد مفصل توي همين بخش توضيح دادم اگه اونا رو مطالعه كنين فكر كنم مشكل حل بشه.
ضمن اينكه بايد مسير بانك رو هم درست رد كنين كه بهترين گزينه براي شما استفاده از ODBC Connection هست كه در مورد اون هم قبلا توضيح دادم.
اونا رو مطالعه كنين اگه مشكلي بود در خدمتم.

موفق باشيد

tdodangeh
دوشنبه 23 اردیبهشت 1387, 08:56 صبح
البته من توضیحات و راهنمایی های شما در این سایت را مطالعه کرده ام ، و اصلاً شروع به کار با کریستال و بالاخره تا به اینجا رسیدن صرفاً بخاطر کمکهای شما بوده، باز هم ممنون.
من در زمان login یعنی در اولین فرم یک متغیر cn از نوع Connectionstring تعریف کردم با این کد

()Private Sub Form_Load
cn.ConnectionString = "Provider=Microsoft.jet.oledb.4.0;Data Source=" + App.Path + "\person.mdb;Persist Security Info=False;Jet OLEDB:DataBase Password=Adonis"
cn.Open
End Sub

و در فرم های مربوط به گزارشاتم هم کد های زیر را قرار داده ام

()Private Sub Form_Load
Calendar = vbCalHijri
Dim crAPP As New CRAXDDRT.Application
Dim crRept As New CRAXDDRT.Report
Dim dbPath As String, ServerName As String
Dim crxTables As CRAXDDRT.DatabaseTables
Dim crxTable As CRAXDDRT.DatabaseTable
Dim rs As New Recordset, sql As String
Set crAPP = New CRAXDDRT.Application
Set crRept = crAPP.OpenReport(App.Path & "\Reports\BazresiKolVahed.Rpt") 'Report File
crRept.ReportComments = FDate(Date)
Initialize
";sql = "select * from Bazsrecikolvahed
rs.Open sql, cn, adOpenStatic, adLockOptimistic
crRept.Database.SetDataSource rs
CR1.Refresh
crRept.DiscardSavedData
crRept.ReadRecords
CR1.ReportSource = crRept
CR1.ViewReport
Screen.MousePointer = vbDefault
Set crAPP = Nothing
Set crRept = Nothing
End Sub

tdodangeh
دوشنبه 23 اردیبهشت 1387, 09:01 صبح
و اگر در سیستم دیگر نصب شود و قرار باشد با دو کاربر دیگر نیز Share گردد آیا باید کدهای زیر در فرم های گزارشات قرار گیرد؟
ServerName = App.Path + "\person.mdb"
dbPath = App.Path + "\person.mdb"
crRept.DiscardSavedData
crRept.Database.LogOnServer "dao.dll", ServerName, dbPath, "", "Adonis"
crRept.Database.Tables(1).SetLogOnInfo servarname, dbPath, "", "Adonis"
Set crxTables = crRept.Database.Tables
For Each crxTable In crxTables
With crxTable
.SetLogOnInfo ServerName, dbPath, "", "Adonis"
End With
Next
و آیا با وجود این کارها باید ODBC انجام شود؟

tdodangeh
دوشنبه 23 اردیبهشت 1387, 09:07 صبح
در سیستمی که VB6 نصب بود وقتی اجرا گرفتم Error: cannot creat activex objet را می داد!!!

Moslemu
دوشنبه 23 اردیبهشت 1387, 12:02 عصر
سلام.
احتمالاً توي اون سيستم كريستال ريپورت نصب نيست.
يا اگه از Merge Module استفاده مي‌كنيد، به درستي توي كامپيوتر قرار نگرفتن.

tdodangeh
دوشنبه 23 اردیبهشت 1387, 13:19 عصر
آیا کدهای بالا برای تعریف متغییر گزارش در برنامه کافی است؟و یا اطلاً کدها درست است؟
حتی در یکی از سیستم ها من کریستال را نیز نصب کردم باز هم همان Error ها را داد!!
خواهشاً در صورت امکان سریعتر من را راهنمایی کنید

Moslemu
دوشنبه 23 اردیبهشت 1387, 20:34 عصر
Public crApp As New CRAXDRT.Application
Public crRpt As New CRAXDRT.Report
Public crDBTab As CRAXDRT.DatabaseTable

Set crRpt = crApp.OpenReport("ReportPath")
crRpt.DiscardSavedData
crRpt.Database.LogOnServer "dao.dll", "ServerName", "dbPath","UserName" , "Password"
crRpt.Database.AddOLEDBSource "ConnectionString", "Table"

For Each crDBTab In crRpt.Database.Tables
crDBTab.SetLogOnInfo "ServerName", "dbPath","UserName" , "Password"
Next

FrmRpt1.CrystalActiveXReportViewer1.Refresh
FrmRpt1.Show

من از اين كد جواب گرفتم.
اميداورم كه شما رو هم به جواب برسونه.

tdodangeh
سه شنبه 24 اردیبهشت 1387, 09:32 صبح
ممنون از جوابتون اما من کدهای شما را نوشتم ، متاسفانه همان Error:ActiveX control cannot creat object را میدهد.واقعاً نمی دانم ایراد از کجاست؟

tdodangeh
چهارشنبه 25 اردیبهشت 1387, 12:16 عصر
من برای تست روی یک سیستم دیگر کریستال ریپورت و VB6 را نصب کردم و می خواستم یک پروژه جدید ایجاد کنم، اما در زمان اضافه کردن َActiveX کریستال ریپورت پیغام خطای Error in dll Loaded را می دهد چگونه رفع عیب کنم؟

tdodangeh
دوشنبه 30 اردیبهشت 1387, 13:06 عصر
در برنامه، در قسمت Referencen تیک مربوط به crystal Report Activex designer design and runtime librery 10.2 را برداشتم و تیک مربوط به crystal Report 9 Activex designer design and runtime librery را زدم و در برنامه بجای craxddrt از craxdrt استفاده کردم و بروی سیستم های دیگر جواب داد

حسین علوی
پنج شنبه 02 خرداد 1387, 13:00 عصر
سلام دوست عزیز
اگر از طریق Map network یک درایو Z که مربوط به مثلا پوشه Newfolder1 در سرورباشد رو در تمام کلاینت ها بسازی و تمام فایلهای گزارشگیری رو اونجا قرار بدی و مسیرهای گزارش رو همون مسیر Z قرار بدی آیا به این صورت هم مشکل حل میشه ؟