# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > دسترسی به داده ها (ADO.Net و LINQ و ...) >  تست کنید : Code Generator 1.0.0 برای تولید خودکار هزاران خط کد

## hdv212

سلام
در راستای تولید نرم افزار Stored Procedure Generator که DelphiAssistant عزیز زحمتش رو کشیدن، منم به فکر ساخت یه نرم افزار کوچولو افتادم که سورس کد برنامه شو تولید کنه، از این رو پس از چند روز تلاش مداوم، بالاخره ورژن 1.0.0 این نرم افزار رو آماده کردم! این نرم افزار پس از اتصال به دیتابیس و انتخاب دیتابیس مورد نظر، تمام جداول اون دیتابیس رو به صورت کدهای به زبان *CSahrp* ویا *VB* به صورت کلاسهای مجزا میسازه، هرچند ابزارهایی هستند در خود Visual Studio 2008 (مانند SqlMetal.exe و یا خود Class Designer)، ولی کمبود یه برنامه ی راحت و سر راست برای تولید چند هزار خط کد واسه لایه ی Bussiness خیلی احساس میشد (اگه باهاش کار کنید، خودتون متوجه میشید)، از دوستان خواهش میکنم این برنامه رو اجرا و تست کنن، کدهای تولید شده برای دیتابیس هاشون رو مرور کنن، *مخصوصا انواعی که برای Columnها در نظر گرفته شده*، منتظر نظرها، انتقادات و پیشنهادات شما عزیزان هستم.
از مدیر عزیز هم خواهش میکنم در صورت لزوم، این تاپیک رو به صورت اعلان قرار بده تا دوستان این نرم افزار رو تست کنن و اشکالاتش برطرف بشه و در نهایت، نرم افزاری بدون خطا و راحت (احتمالا با امکانات بیشتر) در اختیار سایر برنامه نویسان سایت قرار بگیره.



-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

*ورژن 1.2.1 آماده شد :*
- تصحیح اشتباه در بارگذاری دیتاسورس ها.
موفق باشید.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

*نسخه ی 1.3.0با قابلیتهای زیر آماده شد :*

1. امکان کامپایل و تولید اسمبلی برای کدهای تولید شده.
2. تولید کد کلاس Collection از کلاس مورد نظر، که از CollectionBase به ارث برده میشه.
لطفا به این لینک مراجعه کنید.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

----------


## e-shahshahani

با تشکر از زحمتی که کشیدید و وقتی که صرف کردید.

آیا امکانش هست که یه قسمتی اضافه کنید که کد مناسب برای sored procedure ها را هم تولید کند؟

----------


## hdv212

> با تشکر از زحمتی که کشیدید و وقتی که صرف کردید.
> 
> آیا امکانش هست که یه قسمتی اضافه کنید که کد مناسب برای sored procedure ها را هم تولید کند؟


خواهش میکنم دوست عزیز، در مورد خواسته ی  شما همانطور که در ابتدای صحبتهام در همین تاپیک مطرح کردم، این کار رو DelphiAssistant عزیز انجام داده، لطفا به این تاپیک مراجعه کنید.

----------


## top7news

البته دستتون درد نکنه
زحمت کشیدین و مطمئنا هم تجربه های خوبی به دست آوردین هم کار پر ارزشی انجام دادین
ولی خیلی کاملتر و با امکانات خیلی بیشتری رو از همین نرم افزار که شما نوشتین 
خود مایکروسافت خیلی وقت پیش توی سایتش گذاشته
من سال پیش اونو دانلودش کردم 
اسمش دقیقا الان خاطرم نیست ولی حتما پیداش میکنم و معرفیش میکنم
که هم شما هم دوستای دیگه ازش استفاده کنن
باز هم خسته نباشین

----------


## e-shahshahani

> خود مایکروسافت خیلی وقت پیش توی سایتش گذاشته


بعضی وقت ها آدم دوست داره با استاندارد خودش کد بنویسه. ممکنه ابزارهای فوق پیشرفته نتونند سلیقه اش را برآورده کنند. من هم یه دونه از اینا نوشتم و خیلی بهتر از نمونه خارجیش داره کار میکنه!

----------


## hdv212

> البته دستتون درد نکنه
> زحمت کشیدین و مطمئنا هم تجربه های خوبی به دست آوردین هم کار پر ارزشی انجام دادین
> ولی خیلی کاملتر و با امکانات خیلی بیشتری رو از همین نرم افزار که شما نوشتین 
> خود مایکروسافت خیلی وقت پیش توی سایتش گذاشته
> من سال پیش اونو دانلودش کردم 
> اسمش دقیقا الان خاطرم نیست ولی حتما پیداش میکنم و معرفیش میکنم
> که هم شما هم دوستای دیگه ازش استفاده کنن
> باز هم خسته نباشین


خواهش میکنم دوست عزیز، لطف دارید، ولی همانطور که در پست اول تاپیک گفتم چنین ابزاری در خود ویژوال استودیو هم هست، ولی خب اینم مثل هزاران ابزاری که شرکتهای مختلف میسازند، با قابلیتها و امکانات مختلف (البته این ابزاری که من ساختم خیلی کوچکتر از این حرفاست)، به هر حال ممنون از نظراتتون، دوستان اگه ایده ای هم دارن، بگن که من توی این ابزار پیاده سازی کنم و در اختیار دوستان قرار بدم.
متشکرم

----------


## golhay2

با سلام می خواستم بدونم این برنامه با sqlserver2000هم جواب می ده

----------


## Mahdi.Kiani

سلام
قبل از هر چیز تشکر از آقای hdv212 به خاطر زحمتشون..البته من هنوز فرصت تست برنامه ایشون را پیدا نکردم، اما همین کارشون جای تشکر داره.

********




> البته دستتون درد نکنه
> زحمت کشیدین و مطمئنا هم تجربه های خوبی به دست آوردین هم کار پر ارزشی انجام دادین
> ولی خیلی کاملتر و با امکانات خیلی بیشتری رو از همین نرم افزار که شما نوشتین 
> خود مایکروسافت خیلی وقت پیش توی سایتش گذاشته
> من سال پیش اونو دانلودش کردم 
> اسمش دقیقا الان خاطرم نیست ولی حتما پیداش میکنم و معرفیش میکنم
> که هم شما هم دوستای دیگه ازش استفاده کنن
> باز هم خسته نباشین


و اما سخنی کوتاه با شما دوست عزیز...
چرا ما ایرانی ها عادت به این کردیم که خودمون را دست کم بگیریم و همش فکرمون حول این گونه جملات بچرخه که کاریکه ما می کنیم، دیگران ( خارجی ها) کاملترش را انجام دادن؟
هر کاری که صورت بگیره، هر چند تکراری، کمترین حسنش اینه که خود شخص، خیلی از چیز هایی که بلد نبوده را یاد می گیره...
ما تا کی باید مصرف کننده این علم باشیم؟

-----
یه مثال کوچیک می زنم:
یه دکمه (button) سفارشی را را در نظز بگیرین که امثالش هم در سایت هایی مثل codprohect و ...فراوونه ...
خیلی ها فقط عادت کردند، که فورا dll اونو به برنامشون اضافه کنند و بگذارنش روی فرم و ازش استفاده کنند بدون اینکه ببینن داخلش چی نوشته شده ...
شاید اگر اون هایی که صرفا یاد میگیرن از این ابزار های مختلف استفاده کنند، یاد می گرفتند که 
نگاهی هم به درون اون داشته باشند و ببینند چه خبره... حتی چه خوب بود، یک بار از روی کدی که نوشته شده، می نوشت ( نه کپی کردن). تا بهتر درک کنه و اون موقع اقدام به ایجاد اثر جدیدی بکنه ..
***
جالب تر این جاست که برخورد ما با برنامه های خارجی دقیقا به گونه دیگریست..
چند تا شرکت تا حالا اومدن برای برنامه های ویندوزی skin نوشتن؟
وقتی می خواین به کسی اسکین معرفی کنین، خود شما حداقل 4 تا از نام اونا را کنار هم لیست می کنین.... تا حالا به کدوم یک از این شرکت ها یه فیدبک فرستادین که آقا این کاری که شما کردین را فلان شرکت قبلا انجام داده؟ با این که خیلی از اونا دارای خیلی از مشکلات هستند..
**
ببخشید زیاده گویی شد ...
موفق باشید

----------


## razavi_university

سلام
دوست عزیز ممنون از زحمتی که کشیدید، بسیار کاربردی است و در زمان صرفه جویی می‌کند بسیار  . . .
ولی برنامه روی سیستم من جواب نمیده نمی‌دونم مشکل از سیستم منه یا از جای دیگه :گریه: 
زمانی که دیتابیس مربوطه رو انتخاب می‌کنیم و دکمه Generate Code  رو می‌زنیم خطا میده که اسم آبجکت Information_schema.columns نامعتبره
توی Management Studio  که تست کردم دیدم این Select فقط با جدول‌های سیستمی مثل Master  جواب میده
و برای جدوال دیگه Select از اون همین خطا رو میده البته این دو تا روی همه جداول کار داد

select * from sys.columns
select * from sys.all_columns

ممنون

----------


## hdv212

> با سلام می خواستم بدونم این برنامه با sqlserver2000هم جواب می ده


شک دارم، آخه من از جداول سیستمی در Sql Sever 2005 استفاده کردم، باز خودتون تست کنید ببینید میشه و نتیجه رو هم همینجا بذارید، ممنون.




> قبل از هر چیز تشکر از آقای hdv212 به خاطر زحمتشون..البته من هنوز فرصت تست برنامه ایشون را پیدا نکردم، اما همین کارشون جای تشکر داره.


خواهش میکنم عزیز، امیدوارم مورد توجه شما و دوستان دیگه قرار بگیره.




> دوست عزیز ممنون از زحمتی که کشیدید، بسیار کاربردی است و در زمان صرفه جویی می‌کند بسیار . . .
> ولی برنامه روی سیستم من جواب نمیده نمی‌دونم مشکل از سیستم منه یا از جای دیگه
> زمانی که دیتابیس مربوطه رو انتخاب می‌کنیم و دکمه Generate Code رو می‌زنیم خطا میده که اسم آبجکت Information_schema.columns نامعتبره
> توی Management Studio که تست کردم دیدم این Select فقط با جدول‌های سیستمی مثل Master جواب میده
> و برای جدوال دیگه Select از اون همین خطا رو میده البته این دو تا روی همه جداول کار داد


شما از چه ورژنی از Sql Server استفاده میکنید ؟ 2000 یا 2005 ؟
ممکنه به دیتاسورسهای دیگه تون (اگه روی سیستم موجود دارید) وصل بشین و با اونا هم تست کنید ؟
این دستور در هر دیتابیسی کار میکنه و کلیه ی Columnهای موجود رو لیست میکنه :
select * from Information_schema.columns
تقریبا همین مشکل رو من با برنامه ی Sp Generator آقای کرامتی داشتم، یادم نیست از چه ایراد میگرفت، ولی همین ارور ر و میداد، ویندوز رو که عوض کردم دیدم دیگه مشکلی نداره!

----------


## linux

http://www.t4editor.net/
این قسمت را ببنید

----------


## razavi_university

من از 2005 استفاده می‌کنم
به جز دیتابیس ‌های سیستمی به هر دیتابیس دیگه‌ای که وصل می‌شم همین خطا رو میده
میشه به جای Information_schema.columns از sys.columns یا sys.all_columns استفاده کنین
فکر می‌کنم با استفاده از اینها دیگه دیگه این مشکل روی بعضی سیستمها پیش نمی‌یاد.

----------


## hdv212

> من از 2005 استفاده می‌کنم
> به جز دیتابیس ‌های سیستمی به هر دیتابیس دیگه‌ای که وصل می‌شم همین خطا رو میده
> میشه به جای Information_schema.columns از sys.columns یا sys.all_columns استفاده کنین
> فکر می‌کنم با استفاده از اینها دیگه دیگه این مشکل روی بعضی سیستمها پیش نمی‌یاد.


فکر نمیکنم بتونم به راحتی Information_schema.columns باهاش کار کنم، چون مجبورم اونوقت با جداول دیگه ای برای بدست آوردن نام جدولهاش Jion کنم و گذشته از این اطلاعات دیگه هم لازم هست (مثل DataType و ...)، که با استفاده از Information_schema.columns به راحتی میشه بدون join همشو باهم داشت!

----------


## hdv212

> salam
> bebakhshid man chetori mitunam az in narmafzar estefade konam behem error mide ! 
> mamnun misham mano rahnamai konid


با سلام و خوش آمدگویی به شما دوست عزیز
1. لطفا فارسی تایپ کنید.
2. لطفا متن خطا رو اینجا بذارید که مشخص بشه چه خطایی میده.
3. در حالت عادی، بعد از اجرای نرم افزار، گزینه ی Trusted Connection رو تیک بزنید، و بعد روی Connect کلیک کنید، بعد از اینکه دیتابیس ها در نمودار درختی لود شد، دیتابیس مورد نظر را انتخاب کنید، زبان مورد نظر و مسیر ذخیره ی کدها رو مشخص کنید و روی دکمه ی Generate Code کلیک نمایید، نرم افزار در مسیر مشخص شده یک پوشه ی BLL میسازد که شامل کدهای تولید شده هست.

----------


## golhay2

می بخشید این Error  را می ده عکس ضمیمه

----------


## hdv212

> می بخشید این Error را می ده عکس ضمیمه


شما از Sql 2000 استفاده میکنید ؟ احتمالا این View در Sql 2000 نیست.

----------


## parsa_programmer

An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
این error  ی هست که می ده !

----------


## golhay2

همین ٍError نرم افزار sp Generator می داد که در ورژن های بعدی این ایراد اصلاح شد

----------


## hdv212

> An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
> این error ی هست که می ده !


مطمئن بشید که اون Instanceای که بهش وصل میشید، امکان اتصال رو داره، یا اصلا روی سیستمتون موجود باشه، اطمینان حاصل کنید که سرویس SqlBrowser فعال باشه، با Sql management Studio یه بار به همون دیتاسورس وصل بشید(با همون شرایط یعنی اگه Trusted Connection وصل میشید در ManagementStudio هم با همون وصل بشید)، سپس در برگه ی ObjectExplorer روی سرور مورد نظر Right-Click کنید و Properties رو بزنید، و در سمت چپ قسمت Connections رو بزنید و در سمت راست از فعال بودن گزینه ی 
Allow remote connection to this server
اطمینان حاصل کنید، قبل از همه ی این مراحل از استارت بودن سرویس Sql مورد نظرتون اطمینان حاصل کنید!
برای اطلاعات بیشتر به این لینک مراجعه کنید :
How to configure SQL Server 2005 to allow remote connections

----------


## top7news

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

----------


## hdv212

> بازم سلام
> ممنون که به نظرم توجه کردین
> من منکر تمام خوبی های برنامه شما دوست عزیز نبودم و نیسم
> نگفتمم که شما رفتی کپی بردای کردی
> مطمئنا زحمت زیادی کشیدی و اینکه اینطوری بی مزد و منت برای من و امثال من همچین برنامه هایی رو میذاری
> خودش کار بزرگیه ، خدمت دوست عزیزم kiani هم بگم که من منظورم این نبود که کار دوستمون و بی ارزش کنم
> میخواستم بگم که نمونه این کار رو دیدم نه اینکه ارزش های کار این دوستون رو پایین بیارم
> به هر حال اگه از حرفای من توهین یا کم ارزش شدن کار دوستمون بر میاد من همینجا ازش رسما معذرت میخوام چون مطمئنم که هیچی از ارزشهای کارش کم نشده و نیست.
> بازم ممنون


دوست عزیز، من از نظر شما اصلا ناراحت نشدم، در ضمن شما به بنده لطف دارید، من کاری نکردم، وظیفه ای بود که از دستم بر میومد، قابلی نداشت.
از r.kiani عزیز هم تشکر میکنم، حرفای منطقی و قشنگی زد، ما خیلی خودمونو دست کم میگییرم، البته دو تا مشکل بزرگ دیگه هم داریم، یکی اینکه حرف خیلی میزنیم ولی عمل نمیکنیم، منتظر هستیم ببینیم بقیه چکار میکنن، دوم اینکه گروهی نمیتونیم کار کنیم، چراشو نمیدونم ولی واسه ما ایرانیها گروهی کار کردن خیلی سخته(البته من خودمو میگم، به کسی توهین نشه، قصد توهین به کسی رو ندارم، کلی دارم میگم)



> راستی گفتی نظر
> بد نیست طرز کارشو خودت که بهتر از همه بلدی به صورت تصویری یا متنی
> بذاری که بقیه هم بدون اشتباه کار کنن
> ممنون بازم


چشم عزیز، اینم یه عکس آموزشی کوچولو که نمونه شو توی عکس زیر میبینی، با کیفیتش رو از ضمیمه ی زیر دانلود کنید :

در ضمن هرچند این برنامه خیلی کوچیکه، ولی ایده های زیادی میشه براش داشت که در حد توانم به تدریج با بچه های سایت در میون میذارم، بازم منتظر نظرها و پیشنهادات شما هستم.

----------


## anubis_ir

به اس کیوال سرور 2000 که اصلا وصل نمی‌شود:
---------------------------
Invalid object name 'sys.databases'.
---------------------------

به 2005 وصل می‌شود ولی نمی‌تواند تمامی دیتابیس‌ها را پیدا کند و وسط کار متوقف می‌شود:
---------------------------
Incorrect syntax near '1'.
---------------------------

مواردی رو هم که تونسته در 2005 لیست کنه به صورت زیر نمی‌تونه کدی براشون تولید کنه:
---------------------------
Could not load type 'System.DateTimeOffset' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
---------------------------

----------


## anubis_ir

از SQLDMO‌ می‌تونی برای اتصال 100 درصد به 2000 و 2005 بدون هیچ مشکلی استفاده کنی (این شیء  Microsoft SQLDMO Object Library رو باید به برنامه در ابتدا اضافه کنی ):

using SQLDMO;

		public void GetSQLServers(ComboBox ServerList)
		{
			ServerList.Items.Clear();
			ApplicationClass app = new ApplicationClass();
			NameList nmList = app.ListAvailableSQLServers();
			for (int i=1; i<=nmList.Count; i++)
				ServerList.Items.Add(nmList.Item(i));
			nmList = null;
			app = null;
		}

		public void FindDataBases(ComboBox cmbDB,string serverName,string userName,string password)
		{
			SQLServerClass m_sqlServer;

			cmbDB.Items.Clear();

			try
			{
				m_sqlServer = new SQLServerClass();
				m_sqlServer.Connect(serverName, userName, password);
				foreach (Database2 db in m_sqlServer.Databases)
					if (! db.SystemObject)
						cmbDB.Items.Add(db.Name);
			} 
			catch(Exception ex)
			{
				m_sqlServer = null;
				ex = null;
				return;
			}			
		}

----------


## razavi_university

> فکر نمیکنم بتونم به راحتی Information_schema.columns باهاش کار کنم، چون مجبورم اونوقت با جداول دیگه ای برای بدست آوردن نام جدولهاش Jion کنم و گذشته از این اطلاعات دیگه هم لازم هست (مثل DataType و ...)، که با استفاده از Information_schema.columns به راحتی میشه بدون join همشو باهم داشت!


خوب می دونی این مشکلی که روی سیستم من پیش می یاد مربوط به کدوم قسمت SQL میشه که اصلاحش کنم؟
راستی در قسمت مسیر ایجاد کد، اگر خودمون مسیر رو تایپ کنیم و از پنجره انتخاب نکنیم؛ ست نمیشه 
ممنون از زحمتی که می| کشید

----------


## parsa_programmer

من تمام اون مراخل رو اجرا کردم بازم همون error رو بهم می ده !

----------


## ezamnejad

با سلام و تشکر از اقای hdv212 به خاطر تهیه این نرم افزار
همانطور که اقای anubis_ir گفتند شما میتونستید از sqldmo استفاده کنید تا مشکل اتصال به نگارشهای مختلف sql server حل بشه .
یا بهتر از آن استفاده از کتابخانه *smo* است که با امکانات بسیار زیادی که داره میتونستید کدهای کمتری بنویسید و نتیجه بهتری هم بگیرید .

----------


## hdv212

با سلام
ورژن جدید Code Generator آماده شد، با تغییرات زیر :
1. امکان نمایش Columnها به همراه DataType آن.
2. اصلاح کدها به منظور افزایش کارایی.
3. با نظر دوستان، خصوصا anubis_ir عزیز، استفاده از SQLDMO برای Retrieve کردن Database Objects و احتمالا سازگاری با Sql Server 2000، دوستانی که 2000 دارن تست کنن.
بازم میگم، DataTypeهای ساخته شده رو بررسی کنید ببینید مشکلی نداره.

راستی SQLDMO برای Detect کردن DataSource ها به درستی جواب نمیده، فقط Default Instanceها رو پیدا میکنه.
بازم منتظر نظرات و پیشنهادات شما هستم.

اینم ورژن 1.2.0 :

----------


## azarin62

در SqlServer2000 لیست DataBase ها را نمایش نمی دهد

می تونی از StoredPeocedure های سیستمی برای گرفتن اطلاعات پایگاه داده ها و اطلاعات جداول و دیدگاه ها و .. استفاده کنی

توی Books Online به دنبال *Catalog Procedures* بگرد

مثلا : sp_databases لیست تمام پایگاه داده ها را نمایش می دهد

StoredPeocedure های سیستمی در 2000 و 2005 جواب می دهد


اگر خواستی لطفا نظرتو درباره برنامه زیر بنویس

https://barnamenevis.org/showthread.php?t=102923

----------


## hdv212

دوست عزیز، واقعا گل کاشتی، دستت درد نکنه، خیلی عالیه، اینقدر کامله که چیزی به ذهنم نیومد که بهت ایده بدم(تازه ایده هم گرفتم).



> توی Books Online به دنبال Catalog Procedures بگرد
> مثلا : sp_databases لیست تمام پایگاه داده ها را نمایش می دهد
> StoredPeocedure های سیستمی در 2000 و 2005 جواب می دهد


چشم عزیز، سر فرصت این کار رو انجام میدم، الان به خاطر مشغله ی کاری برام سخته که دوباره برنامه رو از نو کد نویسی کنم، سر فرصت چشم، این هم کار رو هم میکنم.

----------


## hdv212

> در SqlServer2000 لیست DataBase ها را نمایش نمی دهد


بعید میدونم مشکلی داشته باشه، آخه SQLDMO با Sql Server 2000 هم سازگاری داره، مطمئنی پارامترهای اتصال رو درست تنظیم کردی ؟ اگه اشتباه داده باشی، چیزی لود نمیکنه.

----------


## anubis_ir

مرسی. این نگارش آخر با 2000 و 2005 مشکلی ندارد. (تست شد)
- بهتر است هربار که نگارش جدیدی ارائه می‌کنید، اولین پست این تاپیک را ویرایش کنید و فایل مربوطه را آنجا نیز قرار بدهید. چون تمام افرادی که به این تاپیک مراجعه می‌کنند ابتدا آن نگارش قدیمی را تست می‌کنند. 
- برنامه هنگام لیست کردن دیتابیس‌ها هنگ میکنه. برای این موضوع دو کار می‌شود انجام داد. از تابع application.doevents استفاده کنید (این روش کار میکنه ولی بدوی است). روش صحیح استفاده از یک ترد است. البته هنگام به روز رسانی یوزر اینترفیس از طریق ترد باید به نکات ریز مربوطه هم دقت داشته باشید تا کل برنامه هنگ نکند.
- من هنوز مشکل زیر را دارم:
Could not load type 'System.DateTimeOffset' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

----------


## razavi_university

جناب hdv212 
ممنون از زحماتتون
برنامه الان روی سیستم من دیگه لیست دیتابیس ها رو نشون نمیده و میگه هیچ دیتابیسی وجود نداره (از 2005 استفاده می کنم)
راستی اگر در برنامه چندین بار دکمه Detect زده بشه هر دفعه نتیجه جستجو رو به قبلی ها اضافه می کنه و در ComboBox اضافه میشه
آقای کرامتی از چه روشی واسه لیست جداول و دیتابیس ها در برنامه SP Gen استفاده کردند؟ نمیشه از همون روش استفاده کرد؟؟

----------


## hdv212

> برنامه هنگام لیست کردن دیتابیس‌ها هنگ میکنه. برای این موضوع دو کار می‌شود انجام داد. از تابع application.doevents استفاده کنید (این روش کار میکنه ولی بدوی است). روش صحیح استفاده از یک ترد است. البته هنگام به روز رسانی یوزر اینترفیس از طریق ترد باید به نکات ریز مربوطه هم دقت داشته باشید تا کل برنامه هنگ نکند.


anubis_ir عزیز، من هم از DoEvent استفاده کردم و هم از BackgroundWorker، بهتر از حالت عادی هست ولی هنوز به قول شما یه مقدار هنگ میکنه.




> من هنوز مشکل زیر را دارم:
> کد:
> Could not load type 'System.DateTimeOffset' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.


مطمئنی از دات نت 2 استفاده میکنی ؟
برای نوع ستون مورد نظرت در Sql Server چی در نظر گرفتی ؟ DateTimeOffset ؟
عوضش کن ببین درست میشه.




> جناب hdv212 
> ممنون از زحماتتون
> برنامه الان روی سیستم من دیگه لیست دیتابیس ها رو نشون نمیده و میگه هیچ دیتابیسی وجود نداره (از 2005 استفاده می کنم)


منظورت کدوم قستمه ؟ دیتاسورس ها توی ComboBox یا Database ها در TreeView ؟
اگه مورد دومی هست، دقت که پارامترهای اتصال رو درست تنظیم کردی.
ر


> استی اگر در برنامه چندین بار دکمه Detect زده بشه هر دفعه نتیجه جستجو رو به قبلی ها اضافه می کنه و در ComboBox اضافه میشه


اصلاح شد، ولی ورژن جدید رو در همون پست اول این تاپیک میذارم، همانطور که دوستمون اشاره کردن، تا همه ی ورژنها با قابلیتها و توضیحاتش یکجا باشه.



> آقای کرامتی از چه روشی واسه لیست جداول و دیتابیس ها در برنامه SP Gen استفاده کردند؟ نمیشه از همون روش استفاده کرد؟؟


نمیدونم از چه روشی استفاده کردن، ولی من از دو روش استفاده کردم، یکی از Viewهای سیستمی در Sql 2005 و دومی هم از SQLDMO، روش سوم استفاده از sp های سیستمی هست که فکر نمیکنم در همه ی ویرایشهای Sql جواب بده، همینطور در زمان گرفتن اطلاعات نیاز هست که چندین کوئری اجرا بشه و نتایج در جداول Temp ذخیره بشن و بعد ازشون Join بگیرم، که فکر کنم کارایی رو تا حد زیادی پایین بیاره.

----------


## azarin62

> روش سوم استفاده از sp های سیستمی هست که فکر نمیکنم در همه ی ویرایشهای Sql جواب بده


sp های سیستمی در همه ویرایش های sql جواب می ده




> همینطور در زمان گرفتن اطلاعات نیاز هست که چندین کوئری اجرا بشه و نتایج در جداول Temp ذخیره بشن و بعد ازشون Join بگیرم، که فکر کنم کارایی رو تا حد زیادی پایین بیاره


این کار در sp های سیستمی انجام شده 
کافیه یه نگاهی به ساختارشون بیندازید

----------


## hdv212

> نقل قول:
> روش سوم استفاده از sp های سیستمی هست که فکر نمیکنم در همه ی ویرایشهای Sql جواب بده  
> 
> sp های سیستمی در همه ویرایش های sql جواب می ده
> 
> 
> نقل قول:
> همینطور در زمان گرفتن اطلاعات نیاز هست که چندین کوئری اجرا بشه و نتایج در جداول Temp ذخیره بشن و بعد ازشون Join بگیرم، که فکر کنم کارایی رو تا حد زیادی پایین بیاره  
> 
> ...


درسته، ولی من نیاز به این دارم که در کل دیتابیس ها و حداول این sp ها رو run کنم، برای این کار نیاز به دستوراتی مثل sp_msforeachtable دارم که تا اونحایی که من توی فرومهای دیگه بحث مطرح کردم، بعضی از ssytem sp ها روی این sp جواب نمیده.

----------


## razavi_university

> anubis_ir 
> منظورت کدوم قستمه ؟ دیتاسورس ها توی ComboBox یا Database ها در TreeView ؟
> اگه مورد دومی هست، دقت که پارامترهای اتصال رو درست تنظیم کردی.


دیتاسورس رو پیدا میکنه ولی دیتابیسها اون رو در TreeView پیدا نمی کنه
 وقتی Trusted Connection باشه دیگه پارامتری نمی مونه!

----------


## Mahdi-563

بسیار بسیار ممنون دوست عزیز. خسته نباشی.

من داشتم با Sql Server 2000 تستش می کردم دیدم View ها رو اصلا نمی‌شنایه.

یه پیشنهاد دیگه، اگه یه نمونه برنامه با یکی از بانک‌های مثل Northwind هم بزاری که نحوه استفاده از برنامه رو به برنامه نویسان تازه کار نشون بده بد نیست.

راستی، اگه در هنگام پرداز یه انیمیشنی نمایش بد که کاربر از این کار متوجه بشه بد نیست. این جوری کاربر کمتر احساس خستیگی مکنه.

----------


## hdv212

> من داشتم با Sql Server 2000 تستش می کردم دیدم View ها رو اصلا نمی‌شنایه.


ضمن تشکر از حسن توجه شما دوست گرامی، بله Viewها همه فیلتر شدن، ولی احتمالا در نسخه ی بعدی Viewها هم اضافه میشن.



> یه پیشنهاد دیگه، اگه یه نمونه برنامه با یکی از بانک‌های مثل Northwind هم بزاری که نحوه استفاده از برنامه رو به برنامه نویسان تازه کار نشون بده بد نیست.


قبلا یه تصویر آموزشی در پستهای قبلی قرار دادم، که بد نیست به اونجا مراجعه کنید.



> راستی، اگه در هنگام پرداز یه انیمیشنی نمایش بد که کاربر از این کار متوجه بشه بد نیست. این جوری کاربر کمتر احساس خستیگی مکنه.


چشم سعی میکنم این کار رو انجام بدم.

----------


## Mahdi-563

ممنونم از شما
البته من خيلي كوچكتر از اين همستم كه بخوام دخالت كنم ولي شما ببخشين. :خجالت: 

من منظورم نحوه استفاده براي توليد كد نبود فدات شم. منظورم اين بود در واقع كه پروژه كوچو اگه تونستي بزار شايدم خودم گذاشتم با اجازه شما.  :بوس:   :بوس:

----------


## hdv212

نسخه ی *1.3.0* هم از این ابزار یه خورده به درد بخور با قابلیتهای زیر آماده شد :

*1. امکان کامپایل و تولید اسمبلی برای کدهای تولید شده.
2. تولید کد کلاس Collection از کلاس مورد نظر، که از CollectionBase به ارث برده میشه.*

توضیح در مورد قابلیت 2 :
این کلاس، بر اساس کلاس اصلی ساخته شده، یک کلاس دیگه که از CollectionBase به ارث برده میشه میسازه، مزیت این کلاس، کار با داده های جداول رو بسیار راحت و به صورت کاملا *Strongly Typed* میکنه، تازه به راحتی میشه  دیتاسورس مربوط  به DataGridView تون رو به این مجموعه بایند کنید، به فایلهای سورس کدی که برای هرکدام از جداول دیتابیستون ساخته میشه، اگه نگاه کنید، وجود کلاس XCollection رو بعد از تعریف کلاس اصلی تون میبینید که X نام کلاس اصلی ای هست که برای جدولتون ساخته میشه، همانطور که گفتم، هدف از تعریف این کلاس، نگهداری یک لیست از اطلاعات جدول مورد نظرتونه، ولی به صورت کاملا Strongly Typed، و به راحتی هم میتونید این اطلاعات رو به فرمهای دیگه انتقال بدید، به زبان خیلی ساده تر، این کلاس مثل DataTable میمونه!
یه نمونه مثال هم در فایل ضمیمه گذاشتم تا دوستانی که گفته بودن، بتونن به راحتی با این ابزار کار کنن، فقط اسکریپت دیتابیس مورد نظر رو در Sql Server اجرا کنید و بعد پروژه رو باز و اجرا کنید.
امیدوارم که این نسخه هم مثل نسخه های قبلی به دردتون بخوره، مثل همیشه منتظر انتقادات و پشنهاداتتون هستم.

[در ضمن یک نظری هم داشتم، از بین دوستان علاقمند به همکاری که توانایی انجام چنین کارهایی رو دارند دعوت میکنم که سورس و توضیحات لازم در مورد این نرم افزار رو در اختیارشون بذارم تا بتونیم با طرح ها و ایده های جدید و خیلی بهتر و بیشتر، این نرم افزار رو توسعه بدیم و در نهایت با عنوان اولین محصول بچه های برنامه نویس ایران زمین به بازارعرضه کنیم (البته این ابزارها مشتریان خاصی داره که دوستانی هم که میتونن در این زمینه همکاری کنن)
من فکر میکنم برای توسعه ی این نرم افزار، نهایتا 5 نفر مورد نیاز هست که این اعضا اعم از برنامه نویسان و اعضایی هستند که توانایی بازاریابی چنین ابزارهایی رو داشته باشن، در ضمن یه شرط دیگه، داشتن ایده و نظر در مورد این برنامه حیاتیه!
در مورد شرایط کاری و نوع کار و درصد و هزینه ها و تعهدات و ... فعلا مد نظر نیست تا ببینم دوستان چه مقدار استقبال میکنن، در صورت لزوم، با پیغام خصوصی همدیگه رو در جریان کار قرار میدیم. در این زمینه هم منتظر نظرات و انتقاداتتون هستم]
موفق باشید.

----------


## Mahdi-563

دمت گرم 
از بابت سورس هم ممنون جالبه

نسخ كالي بود و شما هم شكسته نفسي نفرمائين دوست عزيز فقط فكنم يكم با MS SQL server 2000 مشكل داشته باشه دقيق هنوز تست نكردم ولي اگه شكم به يغين تبديل شد خبر بت مي‌دم

بازم از لطفت ممنونم

----------


## hdv212

> دمت گرم 
> از بابت سورس هم ممنون جالبه
> 
> نسخ كالي بود و شما هم شكسته نفسي نفرمائين دوست عزيز فقط فكنم يكم با MS SQL server 2000 مشكل داشته باشه دقيق هنوز تست نكردم ولي اگه شكم به يغين تبديل شد خبر بت مي‌دم
> 
> بازم از لطفت ممنونم


خواهش میکنم دوست عزیز، مثل همیشه قابلی نداشت، ولی در مورد Sql Server 2000، باید بگم که قاعدتا نباید مشکلی داشته باشه، چون من از SQLDMO استفاده کردم، هرچند که نسخه ی قبلی هم در SqlServer 2000 جواب میداد، ولی باز سعی کن با دقت تست کنی، حتی اگه شد روی سیستمهای دیگه هم تست کن، مخصوصا Type هایی که برای Columnهای ساخته شده در نظر گرفته شده.
موفق باشید.

----------


## مهدی کرامتی

وقتی رو دکمه Detect Data Sources کلیک میکنم این پیام رو نشون میده:
err01.GIF

----------


## hdv212

> وقتی رو دکمه Detect Data Sources کلیک میکنم این پیام رو نشون میده:


احتمالا اگه جستجو کنه و Instanceای رو پیدا نکنه، این خطا اتفاق میفته، دلیلش هم اینه که من پس ازلیست کردن Instanceهای موجود در شبکه، به اون ایندکس 0 رو دادم، ولی زمانی که هیچی پیدا نمیکنه، خب طبیعتا ایندکس 0 رو نمیتونه به عنوان مقدار valid به property مربوطه پاس کنه، برای همین این کد ضمیمه رو کنترل کنید ببینید، مشکل حل شده یا نه، نمیدونم چرا Default Instance ها رو پیدا نمیکنه، البته میشه از SQLDMO به همراه SqDataSources استفاده کرد ولی زمان اجراش، خیلی طول میکشه.

----------


## m.hamidreza

با تشکر از زحمات شما ...
من هم همین مشکل رو دارم :
Could not load type 'System.DateTimeOffset' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
از NET2.0. و SQL SERVER 2005 استفاده می کنم .

----------


## rezaei manesh

سلام
آقا خسته نباشید 
در کد پروژکت هم رنکینگ 5 دادم بهت
اما هنوز برنامه ات کاربردی نیست خیلی کار داره تا بشه ازش استفاده کرد
من فعلا از همون برنامه اقای کرامتی استفاده می کنم و بعضی از پروسیجر ها رو با اون تولید می کنم
الانم در برنامه شما فقط همون قسمت کار می کنه و DAL و BLL خطا میده و کار نمی کنه در ضمن برنامه خیلی کند هستش 
خطاش رو پیوست کردم
موفق باشید

----------


## hdv212

> سلام
> آقا خسته نباشید 
> در کد پروژکت هم رنکینگ 5 دادم بهت
> اما هنوز برنامه ات کاربردی نیست خیلی کار داره تا بشه ازش استفاده کرد
> من فعلا از همون برنامه اقای کرامتی استفاده می کنم و بعضی از پروسیجر ها رو با اون تولید می کنم
> الانم در برنامه شما فقط همون قسمت کار می کنه و DAL و BLL خطا میده و کار نمی کنه در ضمن برنامه خیلی کند هستش 
> خطاش رو پیوست کردم
> موفق باشید


مرسی از حسن توجهت عزیز
بگو ببینم شما برای مقادیر زمان در جداولت از چه انواعی استفاده کردی ؟
DateTime ؟
DateTimeOffset ؟
TimeStamp ؟
یا .... ؟
اگه فکر میکنی روی یکی از فیلدها در جداولت این خطا رو میده، یه دیتابیس جدید بساز، همینطور یه جدول جدید با فیلد مربوطه، ببین حطا میگیره یا نه، در اخر، نوعی رو که باعث ایجاد این خطا میشه به من بگو.
مرسی.
من به خاطر دردسرهایی که این ابزارم برای شما و دیگر دوستان ایجاد کرده، واقعا معذرت میخوام و شرمنده ام.
ولی خب، به خاطر نوشتن این ابزار، خیلی زحمت کشیدم، چند هفته روی System.CodeDom کار کردم، در حین کار به مشکلات پیچیده ای برخورد کردم تا تونستم این ابزار رو بنویسم، اگه توی سورسش در بخش Database Helper دقت کنید، بیش از 800 خط کد نوشتم (که حتی یک خطش هم کپی نبوده، و خط به خط با فکر میرفتم جلو)، به هر صورت خودم تنها کار میکردم و کسی هم که نبوده و نیست که کمک کنه، بهر حال این مشکلات هم در برنامه ها وجود داره، باید تست بشه تا عیب هاش معلوم بشه، پیشاپیش از سعی و تلاش شما و دوستان دیگه در بهبود کیفیت این ابزار (و ابزارهای مشابه) تشکر میکنم.
موفق باشید.

----------


## rezaei manesh

سلام من فکر نمی کنم ربطی به نوع فیلد داشته باشه من رو یه جدول از یه بانک دیگه هم تست کردم که فقط nvarchar و numeric رو داشت 
یه فایلی رو نمی تونه پیدا کنه 
اقا یه چیزی رو همین الان فهمیدن
الان این رو با sql 2000  امتهان کردم جواب داد البته در اونجا هم BLL جواب نداد فقط اون دو تا جواب داد؟!!!!
پس sql2005فقط پروسیجر
در 2000 هم پروسیجر و dal جواب داد و bll جواب نداد 
موفق باشید

----------


## ali_kashani

با سلام

اگر ممكنه يه كم در مورد Store Procdure توضيح دهيد و همچنين در مورد مزاياي اين برنامه

ببخشيد ما خيلي اماتوريم.

----------


## ali.asady

درباره روال های ذخیره شده یا storeprocedure توضیح زیاد هست که مختصری مزایای آن اجرای دستور اس کیوال در سمت سرور و کش شدن آن برای مراجعات بعدی است و بدین صورت از اجرای چندین بار دستورات اس کیو ال خودداری و بار سرور کم می شود و همچنین درکد نویسی کامپایلر با نیاز به کامپایل کردن خطوط دستور اس کیو ال نمی شو د و این کار بار برنامه را کمتر و مدیریت را به اس کیوال سرور واگذار کرده و اجرای برنامه بهینه می شود و خوانا بودن برنامه و .....

----------


## Hossein Bazyan

سلام 

زنده کردن این پست مرده حداقل برای من یکی خوب شد. 
اولا از برنامه دوستان استفاده کردم و دوما یک برنامه به همین شکل برای دیتابیس MySql نوشته و در آدرس زیر آپلود کردم تا دوستان اسفاده کنند

https://barnamenevis.org/showth...61#post1022361

----------


## developer2010

سلام 
من exe  این برنامه را وقتی اجرا می کنم این error را می دهد  
unable to find a version of the runtime to run this application

من از win7  ,.net  2008,2010,sql 2008   استفاده میکنم لطفا مرا راهنمایی کتید
با تشکر

----------

