• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

ایجاد ردیف در دیتا ریپورت

saeed_vb

Registered User
تاریخ عضویت
9 دسامبر 2005
نوشته‌ها
647
لایک‌ها
10
محل سکونت
همین ورا
با سلام به همگی دوستان
میخواستم ببینم روشی هست که با اون بشه برای رکورد هایی که داخل
دیتا ریپورت نمایش داده میشه ردیف گذاشت البته به ترتیب به این شکل

ردیف نام
1 علی
2 سعید


میخوام خودش این شماره ردیف تو لید کنه چون نمیشه ازبانک بگیرتش
ممنون
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
با سلام به همگی دوستان
میخواستم ببینم روشی هست که با اون بشه برای رکورد هایی که داخل
دیتا ریپورت نمایش داده میشه ردیف گذاشت البته به ترتیب به این شکل

ردیف نام
1 علی
2 سعید


میخوام خودش این شماره ردیف تو لید کنه چون نمیشه ازبانک بگیرتش
ممنون

سلام
خوب هستيد
سعيد جان يعني اين ريكرد ها يك شماره اي داشته باشند ؟
ببين اين كد كمكت ميكنه
البته از ويو ليست كمك گرفتم
کد:
     Set rs = New Recordset
    Sql = "select * from tblper "
    rs.Open Sql, Db1
    listPer.ListItems.Clear
    i=1
    Do While Not rs.EOF
        Set lst = listPer.ListItems.Add(, , i, 0)
        lst.SubItems(1) = rs("cnum")
        lst.SubItems(2) = rs("Fname") & " " & rs("Lname")
        rs.MoveNext
	i=i+1
    Loop

يا اينكه به تيبلتون يك فيلد اضافه كنيد كه عددي باشه و ايتدا بياد با استفاده از لوپ متغير كانتر i رو اضافه كنه و اين كانتر رو درون فيلد مورد نظر بريزه و بعد از اجرا دستورات از اين فيلد به عنوان كانتر استفاده كنه

اميدوارم كمك كنه
 

saeed_vb

Registered User
تاریخ عضویت
9 دسامبر 2005
نوشته‌ها
647
لایک‌ها
10
محل سکونت
همین ورا
سلام
خوب هستيد
سعيد جان يعني اين ريكرد ها يك شماره اي داشته باشند ؟
ببين اين كد كمكت ميكنه
البته از ويو ليست كمك گرفتم
کد:
     Set rs = New Recordset
    Sql = "select * from tblper "
    rs.Open Sql, Db1
    listPer.ListItems.Clear
    i=1
    Do While Not rs.EOF
        Set lst = listPer.ListItems.Add(, , i, 0)
        lst.SubItems(1) = rs("cnum")
        lst.SubItems(2) = rs("Fname") & " " & rs("Lname")
        rs.MoveNext
	i=i+1
    Loop

يا اينكه به تيبلتون يك فيلد اضافه كنيد كه عددي باشه و ايتدا بياد با استفاده از لوپ متغير كانتر i رو اضافه كنه و اين كانتر رو درون فيلد مورد نظر بريزه و بعد از اجرا دستورات از اين فيلد به عنوان كانتر استفاده كنه

اميدوارم كمك كنه


نه ولی متشکر خودم یک کاریش کردم نتایج حاصل ازجستجومیریزم داخل یک تیبل بعدش یک فیلد
اتو نامبر بهش اضافه میکنم بعد نمایشش میدم بعدشم پاکش میکنم ولی یک مشکل:wacko: :wacko: :wacko:
چرا وقتی تیبل پاک می کنم حجمش هنوزداخل بانک میمونه :( :( :( :(
یکی کمک کنه چون حجم بانکم هی داره زیاد میشه
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام خوب هستيد
خوب بخاطر اينكه اطلاعات فيزكالي حذف نميشوند و فقط از سر فصل اشارهگرشون پاك ميشه . دقيقا مثل پاك كردن فايل از روي هارد

برا ي حل اين مشكل تا اومجايي كه من ميدونم در كدت بعد از حذف تيبل بايد اون را كامپك كني تا فيزيك هم اطلاعات نا مربوط حذف بشن

بگذار كدشو پيدا كنم ميگذارم برات
به اميد ديدار
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
بازم سلام
سعيد جان ببي اين كد مشكلتو حل ميكنه يا نه
البته با Asp كه فكر كنم به راحتي به وي بي تبديل بشه ( اين كار رو نكردم )
کد:
		Dim oJetEngine
		Set oJetEngine = Server.CreateObject("JRO.JetEngine")
		DbstrCon01 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(ServerDataPath & DbPathAndName01)  

		DestCon = DbstrCon01 &"2" 

		With oJetEngine
			.CompactDatabase DbstrCon01, DestCon
		End With
 

saeed_vb

Registered User
تاریخ عضویت
9 دسامبر 2005
نوشته‌ها
647
لایک‌ها
10
محل سکونت
همین ورا
بازم سلام
سعيد جان ببي اين كد مشكلتو حل ميكنه يا نه
البته با Asp كه فكر كنم به راحتي به وي بي تبديل بشه ( اين كار رو نكردم )
کد:
		Dim oJetEngine
		Set oJetEngine = Server.CreateObject("JRO.JetEngine")
		DbstrCon01 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(ServerDataPath & DbPathAndName01)  

		DestCon = DbstrCon01 &"2" 

		With oJetEngine
			.CompactDatabase DbstrCon01, DestCon
		End With



ممنون رفتم تست کنم میشه در مورد این کد یک توضیحی بدی:) :)
اصلا این کد asp?????????????????
کد وی بیش نداری؟؟؟؟؟؟؟؟؟؟؟
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام
خوب هستید
سعید جان jro یک کامپونته که برای کار با دیتا بیس توسط jet engine طراحی شده دقیقا مثل ado که چندین شی را همراه داره . بهتره بگیم یک کلاس که بصورت اکسترنال توسط معرفی به برنامه قابل دسترسی است . jro مخفف Jet and Replication Objects و این کامپونت داری دو شی JetEngine و Replica که هر کدوم دارای متدها و خواص مخصوص به خودشونن . البته به هم نیز شبیه هستند .اگر درست یادم مونده باشه Replica برای ساختن یک دیتا بیس از روی دیتا بیس دیگر با تفاوت های در ساختار دیتا بیس ها استفاده میشه . با این یکی کار نکردم و جایی هم چیزی ندیدم تا بیشتر در موردش توضیح بدم . فقط توی یک مقاله که درمورد کامپونت های دیتا بیسها در وی بی صجبت میکرد به این مطلب اشاره کرده بود. اما jetengine :
این شی برای کنترل با برنامه نویسی روی دیتا بیسها و لود مجدد و یا ریقرش کردن اطلاعات کش شده استفاده میشه . یکی از متدها این شی CompactDatabase که توسط اون دیتا بیس دیفراگ شده بهینه سازی میشه .

همانطور که گفتم وقتی شما اطلاعاتی را وارد دیتا بیس میکند . توی دیتا بیس یک سرفصل برای این اطلاعات یا ریکورد اضافه شده درست میشه . زیرا با این کار اطلاعات سریعتر دستیابی میشه و کنترل انها راحتره . اما هنگامی که اطلاعات را پاک میکنید فقط سرفصل یا هدر این ریکورد حذف میشه ولی اطلاعات اون توی دیتا بیس باقی می مونه . یعنی محل ای که اطلاعات توی دیتا بیس اشغال کرده بود یا با یک کارکتر غیر مجاز مثلا 0 پر میشه و یا اینکه همانطوری که هست توی دیتا بیس باقی میمونه . اگر انجین دیتا بیس بخواد اطلاعات بعدی را شیفت کنه باید تمامی هدرهای بعد از ریکوردی که دلیت شده را اپدیت کنه که این کار زمان بر و مشکل سازه و از طرف دیگه اگر بخواد از این فضا ها برای ریکورد های جدید استفاده کنه چون ممکنه که ریکورد جدید به مقدار فضای بیشتری احتیاج داشته باشه بازم این کار عملی نیست . لذا این فضا ها را نادیده می گیره که در کل باعث افزایش حجم دیتا بیس و کاهش سرعت دیتا بیس میشه . با استفاده از این متد میشه دیتا بیس جدید و رفرش شده ای را ساخت که حجم کمتری داره و هم اینکه سرعت استفاده از اون دیتا بیس بهتر میشه

نمیدونم تونستم حق مطلب رو به عمل بیارم یا نه؟

کدش با وی می میشه
کد:
Dim oJetEngineAs jro.JetEngine
dim DbstrCon01 as string
dim DbstrCon02 as string
Set oJetEngine= New jro.JetEngine
DbstrCon01 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Yourdbpath
DbstrCon02 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Yourdbpath & "02.mdb"
With oJetEngine
.CompactDatabase DbstrCon01,DbstrCon02 
End With
filecopy Yourdbpath & "02.mdb,Yourdbpath


راستی یک نکته باید کانکشن به دیتا بیس بسته بشه و اگه درست کار نکرد این کامپونت به پروژه برنامتون اضافه کنید
Microsoft Jet and Replication Objects 2.x Library (Version 2.x)


امیدوارم کمک کنه
 

saeed_vb

Registered User
تاریخ عضویت
9 دسامبر 2005
نوشته‌ها
647
لایک‌ها
10
محل سکونت
همین ورا
ممنون الان میرم تست کنم
ولییییییییییییییییییییی بانک من پسورد داره :( :( :( :( :(
قبلا فکر کنم ازاین کداستفاده کرده بودم ولی چون الان بانکم پسورد داره نتونستم
راستی بانکم هم با اکسس 2003 درستش کردم
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام
خوب هستيد
فكر كنم سعيد جان بايد توي استرينگ Provider بتوني پسورد ست كني ؟

بگذار برم خونه تست ميكنم جواب ميدم

به اميد ديدار
 

saeedsmk

مدیر بازنشسته
تاریخ عضویت
6 سپتامبر 2003
نوشته‌ها
1,518
لایک‌ها
4
سلام
خوبي اقا
شرمنده
كامپيوترم تركيده
البته مقصر خودم!!!!! اخه ادمي كه سي پيو سمپرون رو تا سي پيو 3.2 اور كلاك ميكنه بايد منتظر اين اتفاقات هم باشه فكر كنم سي پيو نيم سوز شده الان هم با يك دستگاه p1 دارم كار ميكنم

خودت ميتوني استفاده كني بايد پوزير و پس رو ست كني توي كانكشنت منظورم استرينگه به اين صورت :
کد:
Private Sub Command1_Click()
    Dim myJRO As New jro.JetEngine

    myJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\mymdb\\sample.mdb;Jet OLEDB:Database Password=YourPassword;", _
   "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\mymdb\\compactedSample.mdb;Jet OLEDB:Engine Type=5; Jet OLEDB:Database Password=YourPassword;"
End Sub

اين خطا اي كه ميده بخاطر استفاده كردن از از ODBC است براي رفع همانطور كه اشاره شد( و مايكروسافت هم ميگه ) بهتره از ado درايور و درايور jet engine استفاده كني

منبع براي مطالعه بيشتر
http://support.microsoft.com/kb/270638/EN-US/
البته نميدونم هنوز درست باشه يا و چون دستگاهم الان در پيته و همين صفحه رو هم به زور داره باز ميكنه نمي تونم چك كنم
اما بر اساس نت هاي كه برداشته بودم بايد همين صفحه باشه

اميدوارم كمك كنه
 

saeed_vb

Registered User
تاریخ عضویت
9 دسامبر 2005
نوشته‌ها
647
لایک‌ها
10
محل سکونت
همین ورا
خیلی خیلی ممنون
دمت گرم
دستت درست
بابا ایول
......
......
کارم راه انداختی
ممنون
;) :D
 

rouzbeh_ziafati

Registered User
تاریخ عضویت
17 دسامبر 2006
نوشته‌ها
165
لایک‌ها
5
سن
43
محل سکونت
همدان
سلام
سوال من دقیقا در همین مورد هست می خوام برای رکوردهایی که از بانک گزارش گیری میکنم در دیتا ریپورت یک شماره ردیف هم بگذارم موقع گزارش گیری .
اما متوجه نشدم که دوستان چی گفتند در بالا و کدوم روش درسته و کارساز .
لطفا اگر کسی راه عملی انجام داده که جواب داده کمک کنه
یه دنیا ممنون
 
بالا