PDA

View Full Version : Stored Procedure Generator



مهدی کرامتی
سه شنبه 20 آذر 1386, 00:24 صبح
سلام.

در SQL Server Enterprise Manager 2000 ابزاری وجود داشت که به کمک آن می شد به سختی Stored Procedure ها را بطور نیمه خودکار ایجاد کرد و از نوشتن آنها بصورت دستی خلاص شد. اون ابزار خیلی خوب نبود، اما بقول قدیمی ها کوزه شکسته ای بود که گاهی وقتا ازش آب می خوردیم.

فقدان اون ابزار در SQL Server Management Studio 2005 باعث شد دنبال یک ابزار آماده بگردم، و راه دست ترین چیزی که یافتم این بود: EZStoredProc (http://www.ivertech.com/ezStoredProc/default.aspx)

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

این روزها کمی وقت آزاد بیشتری دارم و میتونم بیشتر برای بازی با کد وقت بگذارم، بنابراین تصمیم گرفتم خودم یکی مثل اون، البته با قابلیت های مد نظرم رو بنویسم. نتیجه اش هم چیزی شده که تصویرش رو در زیر می بینید:


http://i3.tinypic.com/6o277ds.gif


اگر شما هم دوست دارید از یک ابزار آماده برای تولید Stored Procedure هاتون استفاده کنید می تونید از این برنامه استفاده کنید. چیز ساده ای است، اگر پیشنهادی برای بهتر شدنش دارید در خدمت هستم.

کار کردن با این ابزار خیلی ساده است، اسم سرور رو وارد میکنید، دکمه Connect رو کلیک می کنید، دیتابیس، و سپس جدول مورد نظر رو انتخاب میکنید و کلید Generate ... رو کلیک میکنید.
برای ایجاد Stored Procedure ها کافیه اسکریپت SQL ایجاد شده رو در SQL Management Studio در یک Query جدید Copy/Paste کنید و اجرایش کنید.

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

موفق باشید.

pranses_smt
سه شنبه 20 آذر 1386, 09:06 صبح
جناب delphiassistant واقعا عالیه
دستتون درد نکنه

hamed_bostan
سه شنبه 20 آذر 1386, 09:51 صبح
من قبلا خودم این برنامه رو چون بهش نیاز داشتم نوشتم و بر اساس متد های خودم تو کد نویسی توابع vb.net اونها رو هم که استورد پروسیجر رو call میکرد نوشتم و خیلی هم حال داد . نقایصی هم داشت که دستی تو اسکریپت حل میشد و لی ثسمت استورد پرئسیجرش به کاملی برنامه بالا نبود .

ممنون

hdv212
سه شنبه 20 آذر 1386, 12:17 عصر
DelphiAssistant عزیز، ممنون از این حرکت قشنگت.
من برنامه تو اجرا کردم و به محض اینکه به سرور کانکت شدم این پیغام رو میده و فقط دیتابیس ها رو نشون میده (هیچ زیر مجموعه ای براشون درست نکرده):

http://i12.tinypic.com/6z41r9l.jpg

در ضمن اگه کاراکترهای فیلد پسورد به صورت * باشه، خیلی بهتره.
موفق باشید.

anubis_ir
سه شنبه 20 آذر 1386, 13:38 عصر
با تشکر.
- جناب کرامتی از چه برنامه‌ای برای pack‌ کردن برنامه استفاده کرده‌اید؟

چند پیشنهاد:
- از یک ترد برای لیست کردن دیتابیس‌ها استفاده کنید تا برنامه هنگام اتصال به سرور در ابتدای کار هنگ نکنه.
- یک دکمه کوچک ذخیره در فایل مفید‌تر خواهد بود (بجای کپی در حافظه).
- اگر هر جدول را در یک tab‌ جداگانه باز کند زیباتر و کاربردی‌تر خواهد شد.
- اضافه کردن یک منوی جهنده با کلیک راست روی جدول انتخابی همانند دکمه بالایی برای تولید رویه ذخیره شده معمول‌تر و آشناتر است.
- بحث syntax highlighting رو هم می‌تونید اضافه کنید :)

مهدی کرامتی
سه شنبه 20 آذر 1386, 16:12 عصر
به محض اینکه به سرور کانکت شدم این پیغام رو میده و فقط دیتابیس ها رو نشون میده (هیچ زیر مجموعه ای براشون درست نکرده)احتمالا کاربر sa دسترسی کافی برای مشاهده view فوق نداره. برای تست این موضوع این دستور رو تو Management Studio تون اجرا کنید ببینید چی جواب میده:

Select * from AdventureWorks.sys.tables

@ anubis_ir:
از لطف شما متشکرم.

بنده از نرم افزار Xheo CodeVeil برای Protect کردن استفاده کردم.

پیشنهادات شما را نیز مد نظر قرار خواهم داد.

Cave_Man
سه شنبه 20 آذر 1386, 16:57 عصر
آقای کرامتی عزیز این App Win32 نیست؟ ظاهرا دات نت هست درسته؟خواهشا به Win32 تبدیل کنید:چشمک:

مهدی کرامتی
سه شنبه 20 آذر 1386, 21:28 عصر
خیر، مبتنی بر WinForms.Net است و برای اجرا به .Net Framework 2.0 نیاز دارد.

بعدا که کاملتر شد شاید یک Native Image هم ازش منتشر نمودیم.

پرواز
چهارشنبه 21 آذر 1386, 15:10 عصر
جناب کرامتی دستتون درد نکنه. کار قشنگیه.

فقط یه مشکل کوچولو:
وقتی که sp مربوط به Update رو میسازه، تو شرط Where وقتی که عبارتی بعد از کلمه And قرار میگیره، بین اون عبارت و کلمه And فاصله وجود نداره: andFieldName

مهدی کرامتی
چهارشنبه 21 آذر 1386, 18:27 عصر
اصلاح شد.

نسخه 1.0.1 ضمیمه شده است.

hdv212
چهارشنبه 21 آذر 1386, 21:16 عصر
احتمالا کاربر sa دسترسی کافی برای مشاهده view فوق نداره. برای تست این موضوع این دستور رو تو Management Studio تون اجرا کنید ببینید چی جواب میده:
آقای کرامتی عزیز ممنون از لطفتون، مگه میشه sysAdmin دسترس به آبجکتی نداشته باشه ، خیر، توی دیتابیس جواب میده، احتمالا دلیل این خطا به خاطر اینه که من چندتا Instance روی سیستم نصب دارم، ولی آخه به اونا چه ربطی داره ؟
منظورم Instance های دیگه س.

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


بعدا که کاملتر شد شاید یک Native Image هم ازش منتشر نمودیم.
چطوری منتشر میکنی ؟ به ما هم یاد بده استاد ؟ من هر جا خوندم ندیدم Narive Image برنامه های دات نت را Distribute کنن(یعنی میگفتن نمیشه)

Cave_Man
چهارشنبه 21 آذر 1386, 23:12 عصر
من هر جا خوندم ندیدم Narive Image برنامه های دات نت را Distribute کنن(یعنی میگفتن نمیشه)
امیدوارم که بشه چون خیلی دوست دارم از این برنامه استفاده کنم در غیر این صورت متاسفم که از استفاده از این برنامه محروم میشم!!

hdv212
چهارشنبه 21 آذر 1386, 23:55 عصر
امیدوارم که بشه چون خیلی دوست دارم از این برنامه استفاده کنم در غیر این صورت متاسفم که از استفاده از این برنامه محروم میشم!!
البته این کمبود، دلیل داره، زمانی که Clr میخواد برنامه ی کامپایل شده به MsIL رو به NativeCode تبدیل کنه، کاملا هوشمندانه این کار رو انجام میده، یعنی با توجه به نوع پردازشگر و Performance سیستم، این کار رو انجام میده تا بیشترین کارایی رو داشته باشه، به خاطر همین، انتشار NativeCode برنامه های دات نت (تازه اگه بشه)، عملی غیر معقولانه س، چون Performance سیستمهای مختلف با هم فرق میکنه و شاید با کارایی سیستمی که اون NativeCode رو ساخته نباشه.
منبع : Wrox Pro Csharp 2005

مهدی کرامتی
پنج شنبه 22 آذر 1386, 01:37 صبح
آقای کرامتی عزیز ممنون از لطفتون، مگه میشه sysAdmin دسترس به آبجکتی نداشته باشه ، خیر، توی دیتابیس جواب میده، احتمالا دلیل این خطا به خاطر اینه که من چندتا Instance روی سیستم نصب دارم، ولی آخه به اونا چه ربطی داره ؟
منظورم Instance های دیگه س.
فکر نمی کنم به Instance ربطی داشته باشه، چون Instance مورد نظر رو از روی Connection String که از تنظیمات وارد شده توسط شما تعیین میشه تشخیص میده.


در ضمن اگه امکان اتصال به Instanceهای نصب شده روی سیستم رو هم داشته باشه، عالیه، هرچند من هنوز موفق نشدم با موفقیت اجراش کنم.ولی ایده ی فوق العاده خوبیه، ما سراپا ایده ایم!
شما تو این نسخه هم میبایست بتوانید این کار را انجام دهید. در بخش Server Name نام سرور رو اینجوری وارد کنید ببینید جواب میده یا نه:

ServerName\InstanceName

hdv212
پنج شنبه 22 آذر 1386, 02:47 صبح
شما تو این نسخه هم میبایست بتوانید این کار را انجام دهید. در بخش Server Name نام سرور رو اینجوری وارد کنید ببینید جواب میده یا نه
ممنون از پاسخ خوبتون، منظورم این بود که بتونه Instance ها رو هم تشخیص بده.

mahdi_farhani
دوشنبه 26 آذر 1386, 23:58 عصر
با تشکر از اقای کرامتی
هنگام Connect کردن به من این ارور رو میده

invalid object name sys.databases

مهدی کرامتی
سه شنبه 27 آذر 1386, 09:35 صبح
با تشکر از اقای کرامتی
هنگام Connect کردن به من این ارور رو میده

invalid object name sys.databases
آیا نام سرور را وارد می کنید؟

مهدی کرامتی
سه شنبه 27 آذر 1386, 09:53 صبح
نسخه 1.4 با تغییرات زیر آماده شد:
افزوده شدن یک Code Editor با قابلیت های Syntax Hilighting و Code Folding
افزوده شدن امکان درج نام نویسنده SP در قسمت توضیحات بالای هر اسکریپت
تشخیص و استفاده از شناسه MAX بعنوان طول رشته در فیلدهای char و ...
http://i7.tinypic.com/8fd4j5w.gif

Behrouz_Rad
سه شنبه 27 آذر 1386, 10:37 صبح
ممنون از پاسخ خوبتون، منظورم این بود که بتونه Instance ها رو هم تشخیص بده.

برای لیست کردن Instance ها میشه از SQL-DMO به شکل ذیل استفاده کرد:


Dim oNames As SQLDMO.NameList
Dim oSQLApp As New SQLDMO.Application
oNames = oSQLApp.ListAvailableSQLServers()
For i As Int32 = 1 To oNames.Count
MessageBox.Show(oNames.Item(i))
Next

اگر چیزی برگشت داده نشد یعنی localhost

موفق باشید.

Behrouz_Rad
سه شنبه 27 آذر 1386, 10:55 صبح
با تشکر از اقای کرامتی
هنگام Connect کردن به من این ارور رو میده


invalid object name sys.databases


شما از SQL Server 2000 استفاده می کنید.
در SQL Server 2000، نام دیتابیس ها در جدول sysdatabases نگهداری میشه اما در SQL Server 2005، نام دیتابیس ها در جدول sys.databases ذخیره میشه.
جناب کرامتی با یک ساختار Try-Catch میشه این مشکل رو حل کرد و یا برای آگاهی از نسخه ی SQL Server، میشه از متغیر سیستمی Version@@ استفاده کرد.

موفق باشید.

مهدی کرامتی
سه شنبه 27 آذر 1386, 18:17 عصر
در SQL Server 2000، نام دیتابیس ها در جدول sysdatabases نگهداری میشه اما در SQL Server 2005، نام دیتابیس ها در جدول sys.databases ذخیره میشه.با تشکر از اشاره ای که کردید، این مورد اضافه شد.


برای آگاهی از نسخه ی SQL Server، میشه از متغیر سیستمی Version@@ استفاده کردمن از این روش استفاده کردم:

SELECT SERVERPROPERTY('ProductVersion') as ServerVersion

نسخه 1.0.6 با تغییرات زیر آماده دریافت است (ضمیمه همراه پست را ببینید):
سازگار شدن با SQL Server 2000
بهینه شدن کدهای SQL استفاده شده برای تشخیص ستون های Identity و Primary Key
از SQLDMO (برای بدست آوردن لیست Instance های در دسترس) استفاده نخواهم کرد، چون:
همیشه درست کار نمی کنه.
ممکنه رو سیستم کاربر نصب نباشه.
افزودن Reference به Com Object مربوطه سربار برنامه رو بالا میبره.
قابل توجه mahdei_farhani و hdv212:
لطفا بررسی کنید ببینید هنوز اون مشکلات رو دارید یا نه.

mahdi_farhani
سه شنبه 27 آذر 1386, 22:43 عصر
دستتون درد نکنه ، جواب داد
به نظر من اگر بشه همزمان چند Table را با هم انتخاب کرد خیلی بهتره .
در ضمن بازم هم همون مشکل Relation ها که گفتم وجود داره ، Select شما هم به صورت ساده نوشته شده . من می خواهم Join ها و شرط Join هم بدست بیاد .
اگر یه امکان دیگه هم بزارید خوب میشه ، به جای اینکه اول همه sp ها کلمه sp رو بزاره متغییر باشه ، یا حتی فرمت نامگذاری SP ها را بگیره ،
اینهایی که گفتم من تو برنامم دارم .

anubis_ir
چهارشنبه 28 آذر 1386, 08:32 صبح
جناب اسیستنت،

Don't use the prefix "sp_" in the stored procedure name if you need to create a stored procedure to run in a database other than the master database.
http://www.mssqlcity.com/Tips/stored_procedures_optimization.htm

beh_develop
چهارشنبه 28 آذر 1386, 10:25 صبح
آقای اسیستانت دستتون درد نکنه، واقعا عالیه ، فقط برای من این پیغام خطا رو داد :


Invalid column name 'NAME'.
Invalid column name 'Name'.


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

مهدی کرامتی
چهارشنبه 28 آذر 1386, 10:40 صبح
منظورتون رو خوب متوجه نشدم، چطور میشه یه سرور نسبت به حروف بزرگ و کوچک حساس باشه و دیگری نباشه؟

آیا تنظیمات خاصی رو سرور باعث این قضیه میشه؟

beh_develop
چهارشنبه 28 آذر 1386, 10:57 صبح
مثلا اگه Table با نام Students داشته باشین و سرور نسبت به حروف حساس باشه دستور Select * From students یا Select * from STUDENTS اجرا نمیشه، میگه چنین جدول وجود نداره.

من احتمال میدم SQL Server شما نسبت به حروف حساس نیست، اگه بود حتما error می داد

آقای اسیستانت وقتی SQL Server 2000 رو روی ویندوز Server نصب می شه اگه به صورت Default نصب شه ، نسبت به بزرگ کوچیکی حرف ها حساس نمیشه، ولی وقته حالت Default انتخاب نکنیم و می تونیم خودمون انتخاب کنبم که سرور Case Sensitive باشه یا نه

مهدی کرامتی
چهارشنبه 28 آذر 1386, 11:57 صبح
میدونم که میشه چنین تنظیمی انجام داد، اما در کدام قسمت و چه گزینه ای؟

لطفا مراحل تنظیم یک سرور بصورت فوق را بنویسید.

beh_develop
چهارشنبه 28 آذر 1386, 12:15 عصر
سعی می کنم تا 3 ساعت جواب سوالتون و بدم ، آخه ویندوز سرور رو سیستم ندارم ، الان دارم نصب می کنم...

مهدی کرامتی
چهارشنبه 28 آذر 1386, 12:39 عصر
نسخه 1.0.7 با این تغییرات آماده شد:

افزوده شدن امکان تغییر پیشوند Stored Procedure ها به دلخواه شما. اگر می خواهید هیچ پیشوندی برای SP استفاده نکنید کافی است مقدار Prefix را حذف کنید.
ادغام کتابخانه Draco.Controls در پروژه با استفاده از سورس های موجود. اگر از قبل فایل Draco.Controls.CodeEditor.dll در کنار این پروژه قرار دارد می توانید با خیال راحت آن را حذف کنید. این ادغام باعث بزرگ شدن سایز اسمبلی خروجی پروژه شده است، اما سرعت اجرا سریع تر شده است.

beh_develop
چهارشنبه 28 آذر 1386, 13:57 عصر
دوباره سلام، من SQL Server 2000 رو نصب کردم و اون قسمتی که می گفتم رو ازش عکس گرفتم. می تونین ببینین. اگه گزینه اول یا دوم انتخاب بشه ، نسبت به بزرگی و کوچیکی حروف SQL Server حساس می شه.

13006

مهدی کرامتی
چهارشنبه 28 آذر 1386, 15:31 عصر
من الان SQL Server 2000 و 2005 رو نصب شده دارم، بعد از نصب کجا می تونم این تغییر رو اعمال کنم؟

beh_develop
چهارشنبه 28 آذر 1386, 20:14 عصر
آقای اسیستانت، تا اونجایی من می دونم فقط هنگام نصب میشه این تنظیمات و انجام داد و بعدش دیگه نمیشه کاری کرد.

من فکر کنم اشکال کار زیاد به سرور ربط نداره، میشه لطف کنین بگین که تو کد برنامتون این دستور( یا دستورات دیگرو) از لحاظ بزرگ کوچیکی چطور نوشتین؟




Select name from master.dbo.sysdatabase


یا اگه می تونین یه Instance دیگه ای از SQL 2000 رو سیستمتون نصب کنین(با تنظیماتی که تو عکس تو پست قبلی نشون دادم)، برنامتونو رو اون سرور تست کنین.

مهدی کرامتی
چهارشنبه 28 آذر 1386, 22:44 عصر
این دستوری است که من برای بدست آوردن لیست دیتابیس ها در SQL Server 2000 استفاده میکنم:

SELECT dbid AS ID, NULL AS ParentID, NAME AS Text FROM [master].[dbo].[sysdatabases] ORDER BY [Name]

beh_develop
پنج شنبه 29 آذر 1386, 07:23 صبح
با سلامی دوباره:

آقای اسیستانت پیغا خطاهایی که برنامه شما رو سروری که من تست کردم اینا بودن :


Invalid column name 'NAME'.
Invalid column name 'Name'.


در داخل Query که نوشتین اگه دقت کنین فیلد name رو به ای ترتیب نوشتین :


select * from sysdatabases
SELECT dbid AS ID, NULL AS ParentID, NAME AS Text FROM [master].[dbo].[sysdatabases] ORDER BY [Name]


فیلد Name و NAME ای که شما نوشتین اگه با حروف کوچک بنویسین مشکل برنامه حل
میشه. ( اگه تمامی فیلدهایی که تو Query نوشتین دقیقا با Database یکی باشه فکر نکنم دیگه مشکلی باشه)

ممنون، شرمنده که این موضوع این همه طولانی شد.

مهدی کرامتی
پنج شنبه 29 آذر 1386, 08:11 صبح
من موردی رو که شما ذکر کردید تست نکردم، ولی سعی کردم اصلاحش کنم. لطفا تست کنید ببینید درست شده یا نه (ضمیمه را دانلود کنید).

پرواز
پنج شنبه 29 آذر 1386, 09:02 صبح
جناب کرامتی یه نکته هم من بگم:

توی Insert یه کار کنید فکر کنم کامل تر بشه. همونطور که می دونید وقتی که می خوایم تو یه جدول عمل Insert انجام بدیم فقط کافیه فیلدهایی که لازمه مقدار بگیرند (Not Null) رو مقدار دهی کنیم. به عبارت دیگه بقیه فیلدها اختیاری هستند.

حالا اگه تو پروسیجر Insert این رو عملی کنید کاملتر میشه.
Create Procedure sp_tblPanels_Insert
@PanelName nvarchar(30) = NULL,
@Credit int = NULL,
@EmployeeID int
As
...

ممنون.

beh_develop
پنج شنبه 29 آذر 1386, 09:35 صبح
آقای اسیستانت عزیز، پیغام خطایی که می داد حل شده و دیگه اون خطا رو نمی ده ، ولی پیغام خطای زیر رو میده، بازم مربوط به دستوری که نام جداول رو می خواین بخونین.

13023

اگه می شه بخش های دیگرم یه نگاهی بندازین ببینین حروف دقیقا با دیتابیس یکی هست یا نه.

با تشکر فراوان

مهدی کرامتی
پنج شنبه 29 آذر 1386, 12:59 عصر
نسخه 1.0.8 با این تغییرات آماده شد:

افزوده شدن امکانی در بخش Options برای درج خودکار پارامتر پیش فرض Null برای فیلدهای Null پذیر در تولید پروسیجر Insert
Upper Case کردن نام ستون ها برای سازگار کردن با SQL Server در حالتی که بصورت Case Sensitive نصب شده باشد.

پرواز
پنج شنبه 29 آذر 1386, 14:17 عصر
ممنون جناب کرامتی.

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

1- دکمه Connect رو Default کنید تا بعد از وارد کردن نام سرور بشه با اینتر کانکت شد.
2- اگه امکانش وجود داره برای Server Name از کمبو استفاده کنید و نام Instanceها رو به طور پیش فرض بریزید داخلش (مثل خود SQL SEVER هنگام کانکت شدن)
3- Tab Stop مربوط به Radio Buttonها رو True کنید.
4- Author Name رو Trim کنید.
5- توی Perfix امکان زدن کاراکترهای غیرمجاز نباشه (مثلاً ; یا , )
6- سازگاری با زبان فارسی و حذف Space های اول و آخر: من تو پروسیجرهای Insert و Update که برا خودم می نویسم میام فیلدهایی که یونیکد هستند رو اینطور مقداردهی می کنم:
SET @FieldName = RTRIM(LTRIM(REPLACE(@FieldMame, 'ی', 'ی')))که البته LTRIM و RTRIM در مورد فیلدهای غیر یونیکد هم می تونه کارایی داشته باشه.

miladr
دوشنبه 10 دی 1386, 22:54 عصر
میشه به این برنامه امکانی اضافه کرد که با Sql server 2005 Express هم قابل استفاده باشه؟

مهدی کرامتی
سه شنبه 11 دی 1386, 00:27 صبح
الان هم اینکار رو میکنه، بشرطی که دیتابیس مورد نظر در SQL Server Express رجیستر شده باشه و یا Attach اش کنید، بطوری که در Management Studio پس از اتصال به Instance مورد نظر قابل مشاهده باشه (تصاویر ضمیمه را مشاهده کنید).

miladr
سه شنبه 11 دی 1386, 02:09 صبح
Management Studio من اول کار این error رو میده

System.IO.IOException: Cannot create a stable subkey under a volatile parent key.
آشنا نیست؟

miladr
چهارشنبه 12 دی 1386, 18:32 عصر
اون مشکل رو رفع کردم اما الان تو برنامه شما وقت ساختن sp این پیغام رو میده.

Sub Zero
سه شنبه 18 دی 1386, 12:52 عصر
جناب DelphiAssistant آیا امکان اضافه کردن قسمتی تحت عنوان SQl Statements Generator هم وجود داره مثل کاری که برنامه EazySQL (http://www.softpedia.com/get/Internet/Servers/Database-Utils/EazySQL.shtml) انجام میده

rahele_sa
سه شنبه 18 دی 1386, 23:34 عصر
آقای کرامتی تو برنامتون نام فیلدها را بین [] قرار بدهید

e-shahshahani
دوشنبه 24 دی 1386, 21:31 عصر
من یه برنامه نوشتم که sp را می گیره و کد c# تولید می کنه!
کسی خواست بگه.

مهدی کرامتی
سه شنبه 25 دی 1386, 01:36 صبح
من یه برنامه نوشتم که sp را می گیره و کد c# تولید می کنه!
کسی خواست بگه.
در نسخه جدید برنامه بنده نیز این قابلیت گنجانده شده است، بطوری که هنگام تولید SP کد #C مناسب برای فراخوانی آن نیز تولید می شود.


آقای کرامتی تو برنامتون نام فیلدها را بین [] قرار بدهید
حتما.


جناب DelphiAssistant آیا امکان اضافه کردن قسمتی تحت عنوان SQl Statements Generator هم وجود داره مثل کاری که برنامه EazySQL (http://www.softpedia.com/get/Internet/Servers/Database-Utils/EazySQL.shtml) انجام میده
مگه نسخه کنونی کارهایی که اون برنامه انجام میده رو انجام نمیده؟ اگر قابلیت خاصی مد نظرتونه لطفا به تفصیل بیان کنید.

اون مشکل رو رفع کردم اما الان تو برنامه شما وقت ساختن sp این پیغام رو میده.
متن خطا کاملا در تصویر دیده نمی شود، لطفا خطای SQL ای که در پنجره Exception فوق نمایش داده میشود را بنویسید.

Omid Rekabsaz
پنج شنبه 27 دی 1386, 12:29 عصر
برنامه خیلی خوبیه...
ایرادی که من برخورد کردم اینه که User Defined DataType رو جواب نمیده.

و موضوع بعدی استاندارد نامگذاری اگر دست کاربر باشه خیلی بهتره!!!

و نهایتا پیشنهاد می دم این برنامه رو OpenSource کنید تا هر کس بتونه بسته به نیاز منطبقش کنه و برنامه هم خیلی سریع پیشرفت کنه... هر چند که تا حدی پیشنهاد بی شرمانه ای تلقی می شه!!! :)

مهدی کرامتی
پنج شنبه 27 دی 1386, 13:24 عصر
ایرادی که من برخورد کردم اینه که User Defined DataType رو جواب نمیده
یک مثال بزنید، منظورتون در SQL Server 2005 است؟

استاندارد نامگذاری اگر دست کاربر باشه خیلی بهتره
نامگذاری خود Stored Procedure ها منظورتونه؟

Dariuosh
پنج شنبه 27 دی 1386, 14:21 عصر
حالا که مارو تنبل کردین میشه یه چیزیم تو این مایه ها هم بهش اضافه کنید :خجالت:


SET Transaction Isolation Level Serializable
BEGIN Tran
Begin Try
.

.

.


Commit tran
End TRY
BEGIN Catch
Rollback Tran
End Catch
SET Transaction Isolation Level read committed


حالا اختیاری هم میتونه باشه:قلب:

e-shahshahani
پنج شنبه 27 دی 1386, 16:15 عصر
حتما نسخه بعدی Form Generator هم داره دیگه؟ (بگو ان شاء الله!)

benighted.boy
یک شنبه 30 دی 1386, 11:33 صبح
با سلام . و تشکر از زحمات فراوانتان .
یه پیشنهاد کوچیکم من داشتم .این که همه جوره داره مارو تنبل میکنه اگه Server Nameها رو هم خودش لیست کنه یا اونایی رو که قبلا وارد کردیم رو بیاره فکر کنم جالبتر بشه:لبخند:

mr_mtc
سه شنبه 23 بهمن 1386, 22:15 عصر
من یه برنامه نوشتم که sp را می گیره و کد c# تولید می کنه!
کسی خواست بگه.

به قول قدیمی ها؛ نیکی و پرسش

e-shahshahani
سه شنبه 23 بهمن 1386, 23:24 عصر
به قول قدیمی ها؛ نیکی و پرسش

یه مدته سرم شلوغه. ان شاء الله به زودی و پس از اصلاحات مختصر در اختیار دوستان قرار خواهم داد.

bad_boy_2007
دوشنبه 06 اسفند 1386, 14:11 عصر
موقع اتصال به من خطا میده :

bad_boy_2007
دوشنبه 06 اسفند 1386, 14:21 عصر
مشکل من رفع شد !!
با Run as administrator اجراش کردم مشکلش حل شد ولی اگه یکم رو پردازش استثنا بیشتر کار کنی عالی میشه

Elham_gh
دوشنبه 06 اسفند 1386, 14:26 عصر
منظورتون رو خوب متوجه نشدم، چطور میشه یه سرور نسبت به حروف بزرگ و کوچک حساس باشه و دیگری نباشه؟

آیا تنظیمات خاصی رو سرور باعث این قضیه میشه؟

چطور امکان نداره،Collation هایSQL Server هایی که روی 2 تا سرور است متفاوته. یکی Case-Sensitive و دیگری Case_inSensitive است.

razavi_university
شنبه 11 اسفند 1386, 15:04 عصر
ممنون از زحمتی که کشیدید.
زمانی که یک دیتابیس رو به SQL اضافه می کنیم ممکنه اسم اون رو به صورت کامل با مسیرش مینویسه مثل
E:\dbtest\db.mdf
حالا زمانی که من میخواستم از جداولش تو این برنامه استفاده کنم برنامه خطا میده
میشه تو SQL زمانی که میخواییم Atach کنیم Atach As اسمش رو درست کنیم
و مشکل برطرف میشه
فکر کنم با برنامه با \ های توی اسم DB مشکل پیدا میکنه

مهدی کرامتی
شنبه 11 اسفند 1386, 17:00 عصر
دقیقا متوجه مشکل نشدم، لطفا بیشتر توضیح دهید.

razavi_university
یک شنبه 12 اسفند 1386, 12:30 عصر
اگه اسم دیتابیس طولانی باشه (مثلا اسم دیتابیس E:\dbtes\DBt\db.mdf باشه)
برنامه به DB وصل میشه جدولهاش رو هم نشون میده ولی نمیتونه از جداولش پروسیجر بسازه و Error میده

مهدی کرامتی
یک شنبه 12 اسفند 1386, 13:27 عصر
اسم دیتابیس چرا باید اینطوری باشه؟ مگه اسم های رایجی که برای دیتابیس ها در SQL Server استفاده میشه چه مشکلی داره که اینطوری نامگذاری کنیم؟

razavi_university
یک شنبه 12 اسفند 1386, 14:41 عصر
من هم نمی خوام اسم DB اینطوری باشه:عصبانی++:
ولی گاهی وقتا هنگام Atach کردن یه DB به SQL Server پیشفرض خودش اینطوری اسم دهی می کنه غیر از اینکه خودمون موقع Atach کردن تغییرش بدیم (تو قسمت Atach As)
حالا اگه یادمون رفت تغیرش بدیم یا بلد نبودیم (مثه من:افسرده:) تکلیف چیه؟
ممنون

مهدی کرامتی
یک شنبه 12 اسفند 1386, 15:36 عصر
یاد بگیرید. :چشمک:

aidin300
چهارشنبه 15 اسفند 1386, 10:12 صبح
ممنون از کارتون. منم قبلا از این برنامه ای که اضافه کردم استفاده می کردم یه Code Generator ساده هست که علاوه بر SPها، سایر layer ها رو هم تولید می کرد. ولی مگه همه Code Generator ها این کارها رو انجام نمی دن؟

مهدی کرامتی
چهارشنبه 15 اسفند 1386, 14:19 عصر
برنامه کوچک و جمع و جوریه، اما چند تا اشکال داره:

امکان سفارشی کردن کلاسها و SP ها رو نداره.
استفاده اش از Microsoft Enterprise Library هم خوبه، هم بد، اشکالش در اینه که کتابخانه مورد استفاده روی همه سرورها نصب نیست.
SP هاش خیلی استاندارد، و متنوع نیست.در برنامه ای که من نوشتم سعی شده نواقص فوق وجود نداشته باشه.

bad_boy_2007
پنج شنبه 16 اسفند 1386, 00:35 صبح
روی تمام جدولهای من درست کار میکنه غیر از یک جدول ، زمانی که Generate رو روی اون جدول میزنم این خطا رو میده :


See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at SP_Gen.frmMain.a(String b, String b, DataRow[] b)
at SP_Gen.frmMain.a(Object b, EventArgs b)
at SP_Gen.frmMain.a(Object b, EventArgs b)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Obje ct key, EventArgs e)
at System.Windows.Forms.ToolStripButton.OnClick(Event Args e)
at System.Windows.Forms.ToolStripItem.HandleClick(Eve ntArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(M ouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventIntera ctive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(Event Args e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEven tArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Mes sage& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
SP_Gen
Assembly Version: 1.0.7.0
Win32 Version: 1.0.7.0
CodeBase: file:///C:/Documents%20and%20Settings/Hosein/Desktop/sp_gen.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Web
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Web/2.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Transactions
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
Accessibility
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.1433 (REDBITS.050727-1400)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.






اینم اسکریپت ایجاد جدولی که روش خطا میده :

USE [AA]
GO
/****** Object: Table [guest].[Pardakht] Script Date: 03/06/2008 01:03:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [guest].[Pardakht](
[ID] [int] IDENTITY(1,1) NOT NULL,
[IDCustomer] [int] NOT NULL,
[IDUser] [smallint] NOT NULL,
[Description] [varchar](max) COLLATE Arabic_CI_AS NULL,
[Statuse] [smallint] NOT NULL,
[date] [smalldatetime] NOT NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

جدول رو تو یک دیتابیس جدید و خالی هم اضافه کردم و اونجا Generate کردم ولی باز هم همون خطا اومد

مهدی کرامتی
جمعه 17 اسفند 1386, 14:10 عصر
فکر میکنم این مشکل رو در نسخه جدید برطرف کرده باشم، چون با این نسخه ای که الان کار میکنم این Error رو روی جدولی که با Script فوق تولید کردم ندیدم.
نسخه جدید بزودی منتشر میشه.

tc1000
دوشنبه 19 فروردین 1387, 01:34 صبح
جناب کرامتی کارت درسته خدایش
من به نوبه خودم تشکر می کنم

Chabok
جمعه 30 فروردین 1387, 17:45 عصر
با سلام و تشکر از جناب کرامتی در مورد این نرم افزار کارامد

چرا برنامه شما 2 تا تکست باکس داره ؟:لبخند:


http://i32.tinypic.com/2u434ex.jpg

http://i27.tinypic.com/rlzxjm.jpg

amirepsilon
جمعه 30 فروردین 1387, 18:13 عصر
deldel del

hdv212
شنبه 31 فروردین 1387, 22:12 عصر
با سلام
DelphiAssistant عزیز یه مدت زیادی من به این تاپیک سر نزده بودم، نسخه ی جدید برنامه ی شما رو تست کردم، واقعا دستت درد نکنه، خسته نباشید، عالیه، فقط دو تا ایده ی زیر رو اگه بتونی روش پیاده سازی کنی، عالی میشه :
1. امکان تعریف مقادیر Default برای انواع عددی و رشته ای
2. هنوز برنامه قادر به تشخیص Instance های نصب شده نیست، لطفا از این کد برای تشخیص Instance های نصب شده استفاده کنید :

try

{
DataTable servers = SqlDataSourceEnumerator.Instance.GetDataSources();
for (int i = 0; i < servers.Rows.Count; i++)
{
cmbInstances.Items.Add(servers.Rows[i]["ServerName"] + "\\" + servers.Rows[i]["InstanceName"]);
}
cmbInstances.SelectedIndex = 0;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
این کد، کلیه ی Instance های موجود در Network رو Detect میکنه.
موفق باشید.

object
جمعه 06 اردیبهشت 1387, 15:04 عصر
با سلام
من همین الان این تاپیک رو کشف کردم
راستش میدونم که باید از دکمه تشکر استفاده میکردم اما با اون دکمه نمیشد همه حرفها رو زد
هنوز از این برنامه و قابلیتهاش استفاده نکردم ولی چیزی که از خود برنامه برام جالبتر والبته قابل تقدیرتر بود رفتار و مسئولیت پذیری و بزرگواری جناب دلفی اسیستنت بود واقعا فکر نمیکردم اینقدر آدم لارجی باشه
استاد دستت درد نکنه خیلی کارت درسته

rezaei manesh
چهارشنبه 18 اردیبهشت 1387, 08:51 صبح
با سلام
و تشکر فراوان از کار قشنگی که کردین
راستش دکمه تشکر رو زدم اما نتونستم به همون بسنده کنم وخواستم یک تشکر ویژه هم بابت این همه صبر و حوصله ای که به خرج دادین و به تک تک پیشنهاد ها و مشکلات دوستان پاسخ مناسب رو دادین و چنیدن نسخه از برنامه تان رو در اختیار همه گزاشتین ازتون تشکر کنم و سعی کنم این رفتار رو ازتون یاد بگیرم
با تشکر مجدد

ali_fast
جمعه 27 اردیبهشت 1387, 16:37 عصر
با سلام خدمت استاد عزیزم
آقا عالی بود خیلی کار خوب و جلبیرو انجام دادید ممنون

hdv212
جمعه 03 خرداد 1387, 01:18 صبح
DelphiAssistant عزیز یه نظر دیگه.
زمانی که Sp برای قسمت Insert ساخته میشه، برای نوع UniqueIdentifier اگه در قسمت Values از تابع new() استفاده بشه خیلی بهتره، چون اینطوری مجبوریم بعد از ساختن sp ها، این تیکه رو در بخش insert، به صورت دستی درست کنم، یه مثال برای روشنتر شدن مطلب میزنم، فرض کنید جدولی داریم که دو تا فیلد یکی از نوع uniqueidentifier و دیگری از نوع int هست، الان sp مورد نظر برای insert اینطوری ساخته میشه :

create proc sp_insert
@id uniqueidentifier,
@c2 int
as
insert tableName (id,c2) values(@id,@c2)
که به این صورت باید بشه :

create proc sp_insert
@c2 int
as
insert tableName (id,c2) values(newID(),@c2)
موفق باشید.

Chabok
یک شنبه 12 خرداد 1387, 18:53 عصر
سلام
ببخشید . فقط میخواستم بگم اشتباه کردم:خجالت: . برنامه شما 4 تا تکست باکس داره:لبخند:

http://i32.tinypic.com/2rcldlw.jpg

من از مطرح کردن این پست هیچ منظور بدی نداشتم . :چشمک:
فقط برام جالب بود . موفق باشید .

مهدی کرامتی
یک شنبه 12 خرداد 1387, 23:40 عصر
در ورژن بعدی این امکان رو غیرفعال میکنم، چون ضروری نیست. این از امکانات کد ادیتوری است که استفاده کردم.

همچنین، لازم به ذکره نسخه جدید برنامه با امکان تولید کلاس های لایه DAL و کلی امکانات جدید دیگه بهمراه سورس رو در اینجا منتشر کردم: http://www.codeplex.com/spgen

اگر نظری دارید خوشحال میشم بشنوم.

vahid662
پنج شنبه 16 خرداد 1387, 23:00 عصر
اگه میشه لینک دانلود ورژن جدید رو در همین جا بگذارید

hdv212
دوشنبه 20 خرداد 1387, 21:07 عصر
2 تا باگ خیلی مهم :
1. زمانی که Primary Key جدول، int نباشه، زمانی که Proc برای Insert ساخته میشه، میاد یه فیلد identity رو میریزه توی یه مقدار int و بر میگردونه، در صورتی که فیلد PK ما اصلا Int نیست (اگه با خود sql server این استورد پروسیجر رو اجرا کنید و خروجی اون رو در یک متغیر بذارید و بعد اون متغیر رو Select کنید، این مطلب رو به شما نشون میگه که به جای Identity مورد نظر، 0 رو بر میگردونه).

2. عملیات Insert و Update در فیلدهای محاسباتی(Computed Columns) نباید انجام بشه(این فیلدها توسط خود Sql Server مقدار دهی میشه).
با احترام،
موفق باشید.

Zaparo
پنج شنبه 23 خرداد 1387, 00:25 صبح
جالب بود ولی خوب ایراداتی هم داره
ولی چیزهایی که من دیدم چرا Exception ها درست Handle نشدن ؟
دوتا ارور داد و برنامه پرید بیرون
زمانی که سرویس Sql server بسته بود دیگری زمانیکه دیتا بیس موجود نبود که متاسفانه handle نشدن ;)
بعد String برای تولید کد :-o این کار یکم بچه گانه بود و از ادم بزرگی مثل شما بعیده ;) بهتره از معادلهایی که در دات نت هست استفاده کنید

(خوب احتمالا" نه 100% پستم پاک میشه :)) ولی خوب من وظیفه داشتم بگم)

مهدی کرامتی
پنج شنبه 23 خرداد 1387, 20:48 عصر
بعد String برای تولید کد :-o این کار یکم بچه گانه بود و از ادم بزرگی مثل شما بعیده ;) بهتره از معادلهایی که در دات نت هست استفاده کنید
خوب چرا شما این کار رو انجام نمیدی؟ سورس رو برای همین منتشر کردم.

benighted.boy
پنج شنبه 31 مرداد 1387, 22:33 عصر
با سلام
در صورت امکان نمونه برنامه ای جهت استفاده از کلاسهای DAL تولید شده توسط این Generator را بگذارید .
با تشکر .

najafzade
سه شنبه 09 مهر 1387, 05:40 صبح
خوب چرا شما این کار رو انجام نمیدی؟ سورس رو برای همین منتشر کردم.

با تشکر از برنامه بسیار خوبتون که نوشتین
آخرین ورژنش رو کی منتشر می کنین؟

با تشکر:خجالت:

mbm124
چهارشنبه 29 آبان 1387, 09:00 صبح
سلام مي خوام بدونم كه ما از اين Stored Procedure چه استفاده هايي مي كنيم و اينكه قبلا چگونه استفاده مي شد. با تشكر

مهدی کرامتی
چهارشنبه 29 آبان 1387, 11:46 صبح
این SP ها برای انجام 5 عمل اصلی (Insert, Update, Delete, SelectAll, SelectRow) روی رکوردهای جداول دیتابیس ساخته و استفاده میشن.
قبل از تولد SP_Gen مجبور بودیم این SP ها و کلاس لایه Data شون رو دستی بسازیم، اما الان این برنامه این چیزها رو خودکار میسازه و در وقت صرفه جویی میشه.

mina_s3
شنبه 05 بهمن 1387, 14:27 عصر
مرسی واقعا که عالی بود

mahdi_farhani
شنبه 05 بهمن 1387, 14:38 عصر
با اجازه از جناب آقای کرامتی .
یک باگ (البته به نظر من باگه ):
زمانی که یکی از دیتابیس ها Offline باشه در متد RunQuery با خطا مواجه میشه .
فقط کافی که این خطا را هندل کنید ......... سورس را که همه دارید دیگه خودتون اصلاح کنید.

Maste®
شنبه 05 بهمن 1387, 20:26 عصر
سلام اول در مورد ایراد های که بقیه گرفتن
generator به درد برنامه نویس های میخوره که به ساختن dal و sp و غیره کاملا مسلط هستند و این کار در پروژه بزرگ فقط برای این استفاده میشه که وقت کمتری تلف بشه به نظر من برنامه نویس های تازه کار به نوشتن دستی ادامه بدن ::P
برنامه نویس های حرفه ای هم که قاعدتا از این اشتباهات نمیکنن که باعث error بشه
راستی یه چیزیم من خودم درست کردم گفتم بگم شما هم استفاده کنین
در قسمت select all و select Row
من هر دو تارو تو یکی generate کردم اینجوری


CREATE PROCEDURE XXX
@ID int
AS
SELECT * FROM TABLEXXX WHERE ID=@ID OR @ID=null

اینجوری وقتی پارامتر null ارسال بشه مثل Select all عمل میکنه
در کل بابت برنامه ممنون :قلب:

mfblog
دوشنبه 07 بهمن 1387, 01:31 صبح
دستتون درد نکنه DelphiAssistant (http://barnamenevis.org/forum/member.php?u=1206)
چقدر شما با حوصله هستید http://qsmile.com/qsimages/156.gif

من از ولین پست خوندم تا اینجا و تمامه ورژن هاشو dl کردم :لبخند:
من از sql server 2005 استفاده کردم و تو هیچ کدوم از ورژن هاش ، نام سرور رو وارد نکردم و خالی گزاشتم ، و مشکلی ایجاد نشد ، چه نیازی هست localhost بنویسم ؟!!!

samansad
چهارشنبه 09 بهمن 1387, 06:42 صبح
salam kheili barname khob va karbordii gozashtid malome ke vasash zahmate ziadiamkeshidid.
man alan chand sali ke iran nistam va dar hale hazer mashghole edame tahsil hastam. yechize jaleb vasam pish omad inja ke omadam. dar donyaye pishrafte kasani manande shome ke injor barname haro be forosh nemiresonan ziad shodan makhsosan ke emroze kheilia migan in kar mitone be pishrafte elme barname nevisi komak kone.
hala man az shoma ke ozvi az in afrad hastid ye khahesh daram
dar iran kasi ba open sourcce kari nadare va hata hazer nistim codhamono be digaron bedim darsorati ke dar donyaye pishrafte injori nist.
mikhastam yek pishnahad bedam, chera shoma ham mesle yeki az in chand hezar nafari ke hamchin barnamehaio opensource mikonan ta betonan ham pishrafte barnamashono bebinam ham inke be donyaye barname nevisi komak konan inkaro nemikonid shoma ke zaheran ghaste dalali ba in barname khobo nadarid pas chera barname va codesho dar sithai mesle : http://sourceforge.net/index.php ke mahale tajamoe bozorgane barname nevisie donyast nemigozarid ta shoma ham be jame barname nevisane azade donya bepeivandid.
in vase man soale ke chera ma to iran inkaro nemikonim.

mfblog
چهارشنبه 09 بهمن 1387, 19:39 عصر
سلام samansad (http://barnamenevis.org/forum/member.php?u=40964) ، سورسشو که در اختیار عموم گزاشتن .

من تازه شروع کردم به برنامه نویسی وزیاد بلد نیستم
یه سوالی داشتم

public DataSet SelectRow(string id)
{
DbObject dbo = new DbObject();
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("id",id)
};
return dbo.RunProcedure("sp_userInfo_SelectRow", parameters, "userInfo");
}
تو این تابع DbObject رو از کجا بیارم ؟http://qsmile.com/qsimages/162.gif

mina_s3
شنبه 19 بهمن 1387, 12:22 عصر
سلام
مرسی، نرم افزار عالییه :تشویق:، اما نمیدونم چرا من نمی تونم رو PCایم نصبش کنم:متفکر:

banitaba
دوشنبه 05 اسفند 1387, 22:53 عصر
جالبه اما خیلی جای کار داره ، موفق باشید

ebnsina
چهارشنبه 30 اردیبهشت 1388, 16:35 عصر
سلام samansad (http://barnamenevis.org/forum/member.php?u=40964) ، سورسشو که در اختیار عموم گزاشتن .

من تازه شروع کردم به برنامه نویسی وزیاد بلد نیستم
یه سوالی داشتم

public DataSet SelectRow(string id)
{
DbObject dbo = new DbObject();
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("id",id)
};
return dbo.RunProcedure("sp_userInfo_SelectRow", parameters, "userInfo");
}
تو این تابع DbObject رو از کجا بیارم ؟http://qsmile.com/qsimages/162.gif



اگر سورس برنامه را دانلود کنید ، فایل این کلاس را پیدا خواهید کرد
موفق باشید

bahman_akbarzadeh
پنج شنبه 25 تیر 1388, 01:42 صبح
سلام
برنامه فوق العاده ايه
ولي يه سري مشكلات داره كه اگه رفع بشه بهتره.

اول اينكه امكان Attach كردن نداره.
فقط يك SelectAll داره و همونم زياد كاربرد نداره، در صورتي كه بايد به ازاي هر كليد خارجي، يك SelectAllByFK داشته باشه.
در كلاس ها، فيلد هاي Null چك نميشن كه اگه مقدار خالي بهش پاس داده شد، Exception لازم رو توليد كنه.
در Sp ها، هميشه فيلد اول جهت كليد اصلي در نظر گرفته ميشه، در صورتي كه بعضي ها عادت دارن، اول كليد خارجيشونو بزارن، بعد كليد اصلي.

يه سوال هم داشتم.
شما نمي دونيد خاصيت Description فيلد هارو از كدوم View سيستمي SQL Server ميشه پيدا كرد؟

yousef_61
جمعه 26 تیر 1388, 20:51 عصر
با سلاو و خسته نباشيد خدمت آقاي كرامتي و همه دوستان كه كمك كردن تا اين برنامه تكميل بشه.

فقط خواستم تشكري كرده باشم و بگم كه از اينكه تو اين سايت با اين مديران دلسوز و زحمتكش عضو هستم به خودم ميبالم.

saeedr22
چهارشنبه 21 مرداد 1388, 04:52 صبح
خیلی جالب بود ممنونم.

mohamad.shaloo
پنج شنبه 05 شهریور 1388, 10:59 صبح
از شما برای کمک به آموزش از طریق اینترنت کمال تشکر را دارم و امیدوارم در تمام مراحل زندگی موفق باشید.

fiend_net
سه شنبه 17 شهریور 1388, 08:58 صبح
واقعا عالي بود

ممنون!!!

يه پيشنهاد دارم!
اگه بشه توي Option نام پيش فرض براي هر SP انتخاب كنيم خوبتر ميشه!!!
مثل من ميخوام به جاي DeleteRow از Delete استفاده كنم!
يا همينطور به جاي InsertRow از Insert
يعني 5 تا sp اي كه ميسازه رو با نام هاي دلخواه ما بزنه

با تشكر!:چشمک:

jalalx
جمعه 10 مهر 1388, 17:14 عصر
بابت این برنامه دست شما درد نکنه ولی خوب می شد اگه پروسیجر تولید شده دارای Transaction می بود. مثل این:


USE Accounting;
GO

--Defintion of procedure
CREATE PROCEDURE [AddPersonnel]
(
@FirstName [nvarchar](50),
@LastName [nvarchar](50),
@Phone [nvarchar](50),
@Mobile [nvarchar](50),
@Address [nvarchar](50)
)
AS

--Starting transaction
BEGIN TRANSACTION

--Insert command
INSERT INTO Customers VALUES (@FirstName,@LastName,@Phone,@Mobile,@Address)

--Checks for any error
IF @@ERROR <> 0
BEGIN
--Roll back any change made by command.
ROLLBACK

--Display message
RAISERROR ('Error Adding Customer Record', 16, 1)

--Exit form procedure
RETURN
END

--Save all changes on database and exit
COMMIT
RETURN

bahman_akbarzadeh
شنبه 11 مهر 1388, 00:53 صبح
بابت این برنامه دست شما درد نکنه ولی خوب می شد اگه پروسیجر تولید شده دارای Transaction می بود. مثل این:


USE Accounting;
GO

--Defintion of procedure
CREATE PROCEDURE [AddPersonnel]
(
@FirstName [nvarchar](50),
@LastName [nvarchar](50),
@Phone [nvarchar](50),
@Mobile [nvarchar](50),
@Address [nvarchar](50)
)
AS

--Starting transaction
BEGIN TRANSACTION

--Insert command
INSERT INTO Customers VALUES (@FirstName,@LastName,@Phone,@Mobile,@Address)

--Checks for any error
IF @@ERROR <> 0
BEGIN
--Roll back any change made by command.
ROLLBACK

--Display message
RAISERROR ('Error Adding Customer Record', 16, 1)

--Exit form procedure
RETURN
END

--Save all changes on database and exit
COMMIT
RETURN


در صورتی احتیاج میشه که چند تراکنش داشته باشیم.
وقتی یک تراکنش موجود باشه، اگه به مشکلی بخوره، چیزی ثبت نمیشه، وگرنه ثبت میشه.

در ضمن من یه گله هم دارم و اون اینه که چرا نرم افزاری که داره یک سری کد شی گرا تولید میکنه، خودش شی گرا نوشته نشده ... البته اگه فرم ها رو کلاس در نظر نگیریم.

raziee
سه شنبه 21 مهر 1388, 16:15 عصر
با درود
ببخشید من با استفاده از این نرم افزار مشکل دارم. یعنی این نرم افزار تنها بانک هایی رو میخونه که در روی sql server که بر روی سیستم نصب شده کار میکنه؟
منظورم اینه که اگه sql server رو نصب نداشته باشیم و از sql server 2005 ویژوال استدیو استفاده کنیم نمیتونیم از این نرم افزار استفاده کنیم؟

bahman_akbarzadeh
چهارشنبه 22 مهر 1388, 00:19 صبح
با درود
ببخشید من با استفاده از این نرم افزار مشکل دارم. یعنی این نرم افزار تنها بانک هایی رو میخونه که در روی sql server که بر روی سیستم نصب شده کار میکنه؟
منظورم اینه که اگه sql server رو نصب نداشته باشیم و از sql server 2005 ویژوال استدیو استفاده کنیم نمیتونیم از این نرم افزار استفاده کنیم؟

اگر بخواین از SqlExpress استفاده کنین، باید DB رو در بخش Connect to sql server اتچ کنین، نه از بخش Connect to sql server (Database File)

raziee
پنج شنبه 23 مهر 1388, 19:03 عصر
اگر بخواین از SqlExpress استفاده کنین، باید DB رو در بخش Connect to sql server اتچ کنین، نه از بخش Connect to sql server (Database File)
ببخشید اما:ناراحت:
من متوجه نشدم. در برنامه ی نوشته شده توسط آقای کرامتی که همچین چیزی نیست.
آم.
میشه بیشتر راهنمایی کنید.
ببخشید.

bahman_akbarzadeh
جمعه 24 مهر 1388, 01:27 صبح
ببخشید اما:ناراحت:
من متوجه نشدم. در برنامه ی نوشته شده توسط آقای کرامتی که همچین چیزی نیست.
آم.
میشه بیشتر راهنمایی کنید.
ببخشید.

بنده از این نرم افزار استفاده نمیکنم، ولی تا اونجایی که دیدمش، قابلیت Attach دیتابیس رو نداشت.
پس اگر بخواین از SqlExpress که همراه با dotNet نصب میشه، استفاده کنین، باید از Server Explorer که از منوی View قابل مشاهده هست، یک کانکشن جدید بزنین و نوع کانکشن رو SqlServer بزارین (بالای اون گزینه که Database file داره) و نام سرور رو sqlexpress\. بزارین و فایل دیتابیس رو Attach کنین.
بعد از این کار، میتونین از نرم افزار استفاده کنین.

saed2006
سه شنبه 28 مهر 1388, 12:04 عصر
اخرین ورژن پروژه اونجایی که dal تولید میشه
روی DbObject خطا میگیره
چجوری باید رفع کنم؟
من هرچی دنبال dll تو فولدر پروژه گشتم چیزی رو پیدا نکردم

ferizakhar
پنج شنبه 14 آبان 1388, 18:29 عصر
سلام
می خوام store procedure درست کنم که ورودیش متن فارسیه.برای مثلا اضافه کردن متن فارسی باید N رو قبل متن بگزارم
چه جوری در store Procedure این کارو بکنم

aliprogrammer
سه شنبه 19 آبان 1388, 23:22 عصر
با سلام خدمت آقای کرامتی عزیز
من این تاپیک رو به طور کامل مطالعه کردم و دیدم کم لطفیه که بیش از هزاران بار از شما تشکر نکنم بخدا کمتر کسی پیدا می شه که مثل شما خودش آستین بالا بزنه و نیاز خود رو برطرف کنه ما ایرانیا متاسفانه نشستیم و چشمون فقط به دست غربیاست که یه مشت آدم خنگ بیشتر نیستند ( بی ادبی بنده را ببخشید). ما فقط دنبال کارهای اونا هستیم که نیازهامون رو برطرف کنه
به هر حال من از شما تشکر می کنم و امیدوارم که تو کارات موفق باشی

ali_bagheri34
شنبه 21 آذر 1388, 11:45 صبح
با سلام
من تازه وارد هستم
ببخشيد اگه سوالم تكراري هستش
*لطفا آخرين ويرايش برنامه ؛ لينكش را بگزاريد ()
* و يك راهنماي ساده براي كار كردنش بگذاريد كه چطوري ميشه از آن استفاده كرد

با تشكر

mrvakil
سه شنبه 15 دی 1388, 16:30 عصر
جناب DelphiAssistant ، جسارتا یه پیشنهاد داشتم که می تونه به زیبا تر شدن برنامتون کمک کنه ،
می تونید خودتون تو برنامتون query ایجاد کردن stored procedure ای که ایجادش کردینو
توی دیتابیسی که کاربر انتخابش کرده اجرا کنید ، تا اینکه کاربر بخواد اونو Copy/Paste کنه توی دیتابیسش و بعد بسازتش.:چشمک:

مهدی کرامتی
سه شنبه 15 دی 1388, 17:18 عصر
بالای قسمتی که Script ها رو نمایش میده یک دکمه هست بنام Run Scripts Against Server که همین کار رو میکنه.

benyaminrahimi
دوشنبه 21 دی 1388, 10:42 صبح
سلام
خسته نباشيد بابت زحمتي که کشيدين

يه سول داشتم
ميشه برنامه خودتون رو با برنامه sql assistant مقايسه کرده و بگين چه مزايايي نصبت به اون داره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

با تشکر

مهدی کرامتی
دوشنبه 21 دی 1388, 13:53 عصر
این دو برنامه قابل مقایسه نیستند.

SQL Assistant یک برنامه است که هنگام نوشتن دستورات SQL با افزودن قابلیت Intellisense برای ساختارهای موجود در دیتابیس انتخاب شده، نوشتن دستورات SQL رو تسهیل میکنه.

SPGen یک برنامه برای تولید SP های پایه برای مدیریت داده ها در دیتابیس، و تولید لایه دسترسی به داده های برای اونهاست.

پرواز
دوشنبه 28 دی 1388, 23:37 عصر
یه مشکل که من خیلی وقته بهش بر خوردم ولی وقت نکرد مطرح کنم اینه که اگه تو SQL از Schema بشه اینجا اسم جدول بدون Schema میاد و نمیشه از SPها استفاده کرد.

M.YasPro
دوشنبه 10 اسفند 1388, 11:13 صبح
سلام
ممنون از این تولید این پروژه که در اختیار عموم قرار دادین .
جسارتا نوع داده ای varbinary(max) رو توی پروسجر ها varbinary میزنه

sjhosseini
چهارشنبه 12 اسفند 1388, 15:54 عصر
این لینک متاسفانه باز نمیشه؟
اگه امکان داره یه جادیگه آپلود کنین ممنون میشم
http://www.codeplex.com/spgen

Chris_Ronaldo
جمعه 14 اسفند 1388, 17:19 عصر
این دو برنامه قابل مقایسه نیستند.

SQL Assistant یک برنامه است که هنگام نوشتن دستورات SQL با افزودن قابلیت Intellisense برای ساختارهای موجود در دیتابیس انتخاب شده، نوشتن دستورات SQL رو تسهیل میکنه.

SPGen یک برنامه برای تولید SP های پایه برای مدیریت داده ها در دیتابیس، و تولید لایه دسترسی به داده های برای اونهاست.

من برنامه شما را نديدم ولي اين طور كه به نظر مياد برنامه شما در سطج ديتابيس و كد برنامه يك سري اسكريپت توليد مي كند.

ابزار ssms tools كه اگر استفاده كرده باشيد توي sql server نصب ميشه و يكي از امكاناتش همين توليد sp هاي insert و update و delete هست.

البته eazy code هم برنامه كوچكي هست كه اخيرا كركش ايجاد شده و به نظرم مثل برنامه شما كار ميكنه و فرم و كد و sp ها را ايچاد مي كند.

پيروز باشيد

ar.mahdian
دوشنبه 16 فروردین 1389, 10:49 صبح
از آقای DelphiAssistant عزیز یه سوال داشتم.
من برای کارکردن با جدولهام خودم کلاس مینویسم.شبیه همون کدی که برنامه شما تولید میکنه.
در خیلی از کلاسهام وقتی عملیات درج رو انجام میدم کلید خط جدیدی که درج شده رو برمیگردونم.
برنامه شما هم این کار رو انجام میده اما تصورش بر این هست که همه کلیدها از نوع int هستند در حالی که نوع کلید در یکی از جدولهای من BIGINT است و متاسفانه تشخیص نداد
ممنون میشم اگه بررسی نمایید.
با تشکر فراوان.:تشویق::تشویق::تشویق:

batorsia
پنج شنبه 16 اردیبهشت 1389, 09:21 صبح
با سلام /
ممنون از زحمتی که کشیدید. کد بسیار پر کاربرد و عالی ای هست. /
میخواستم ببینم امکان افزودن 2 مورد به برنامتون هست یا خیر ؟
اول اینکه کدهای تولید شده در سمت ویژوال استادیو، یعنی کلاسی که تولید میکنید از لایه ی Data Access مربوط به Enterprise Library استفاده کند. (DAAB) /
و دیگر اینکه در اسکریپت تولید شده در سمت سی کو ال، از Transaction جهت کنترل تراکنشها استفاده کنید. /
با تشکر

babak869
یک شنبه 26 اردیبهشت 1389, 23:23 عصر
بالای قسمتی که Script ها رو نمایش میده یک دکمه هست بنام Run Scripts Against Server که همین کار رو میکنه.

با سلام
جناب آقای کرامتی عزیز
امکان داره کد دلفی این دکمه رو بزارید چون نیاز به این کار دارم که بتونم توی دلفی متن یه پروسیجر رو که مثلا توی یه Memo نوشته شده اجرا کنم.البته کوئری های کوچک رو با استفاده از AdoCommand انجام میدم اما برای متن طولانی و بخشهایی که کوتیشن یا پرانتز داره ایراد میگیره
با تشکر

HamidSI
پنج شنبه 30 اردیبهشت 1389, 10:12 صبح
سلام
ممنونم بابت این برنامه قشنگیه که نوشتین! :قلب:
فقط من نتونستم Source برنامه رو پیدا و دانلود کنم!!! :ناراحت:
میشه راهنماییم کنید!
ممنونم

Iran58
پنج شنبه 30 اردیبهشت 1389, 10:23 صبح
سلام
هنگام تبديل بانك به پروسيچر داده هاي كه دارائي خاصيت nvarchar(max)هستندتبديل بهnvarchar)-1(ميشود
لطفااصلاح فرماييد

HoseinVig
پنج شنبه 13 خرداد 1389, 18:38 عصر
سلام
اول تشکر
دوم اشکالاتی که من برخوردم:
1)در کد سی شارپ DbObject برای سی شارپ قابل شناسایی نیست.
2) اگر فیلدی از جدول ایدنتیتی باشه(بصورت خودکار اضافه بشه) در زمانی که میخایم مقداریو پاس بدیم به متد درج اگر این مقدار را نفرستیم اشکال نگیره و بصورت خودکار اینسرت بشه...
3) امکانش باشه که دیتابیسو انتخاب کنیم و توابع تمام جدول هایش ایجاد شود...(الان باید یکی یکی انتخاب بشن)

naser2009
چهارشنبه 26 خرداد 1389, 15:51 عصر
سلام
اول تشکر
دوم اشکالاتی که من برخوردم:
1)در کد سی شارپ DbObject برای سی شارپ قابل شناسایی نیست.
در ضمیمه هست دانلود کنید


2) اگر فیلدی از جدول ایدنتیتی باشه(بصورت خودکار اضافه بشه) در زمانی که میخایم مقداریو پاس بدیم به متد درج اگر این مقدار را نفرستیم اشکال نگیره و بصورت خودکار اینسرت بشه...


به همین صورت هم هست


3) امکانش باشه که دیتابیسو انتخاب کنیم و توابع تمام جدول هایش ایجاد شود...(الان باید یکی یکی انتخاب بشن)

خود مهندس باید جواب بدن نظره خوبی هست
ببخشید 13 روز دیر شد:متعجب:

qqq2qqq
سه شنبه 01 تیر 1389, 10:01 صبح
لطفا یکی لینک آخرین ورژن store procedure generator رو بذاره
در ضمن تو نسخه های قبلی اصلا جداول رو واسم نمی یاره و فقط اسم دیتابیسام هست

Hossein Bazyan
چهارشنبه 02 تیر 1389, 18:01 عصر
سلام

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

http://barnamenevis.org/forum/showthread.php?p=1022361#post1022361

FirstLine
سه شنبه 15 تیر 1389, 02:50 صبح
با سلام
برنامه خیلی عالی و خوبیه، از آقای مهندس کرامتی ممنون و سپاسگزارم.
با توجه به نیاز و کارم مجبورم که لیست همه فیلدهای هر جدول بهمراه توضیحات Description مربوط به هر فیلد را در قبل از کدهای تولید شده بصورت کامنت نمایش دهد.
برای اینکار دو تابع زیر را در کلاس SQL_Generator.cs اضافه کرده ام



#region "Test"

public static string Get_Field_Description(string Table_Name, String Field_Name)
{

DbObject dbo = new DbObject();

string str_Query = string.Empty;
str_Query = " SELECT ep.value AS PropertyValue ,c.name AS ColumnName FROM sys.objects o INNER JOIN sys.extended_properties ep ON o.object_id = ep.major_id INNER JOIN sys.schemas s ON o.schema_id = s.schema_id LEFT JOIN syscolumns c ON ep.minor_id = c.colid AND ep.major_id = c.id WHERE o.type IN ('V', 'U', 'P') AND o.Name = '" + Table_Name + "' and c.name='" + Field_Name + "'";

DataSet dsServer = dbo.RunQuery(str_Query, "Server");

string Field_Description = string.Empty;

if (dsServer.Tables[0].Rows.Count > 0)
{
Field_Description = dsServer.Tables[0].Rows[0]["PropertyValue"].ToString();
}
return Field_Description;
}




public static string List_All_Field(string TableName, DataRow[] Columns)
{
string SQL = string.Empty;

SQL = "لیست همه فیلدها";
SQL += "\r\n \r\n" + "";


bool firstParam = true;
int int_TabIndex = 0;

DbObject obj_DbObject = new DbObject();

foreach (DataRow row in Columns)
{
int_TabIndex += 1;
string Field_Name = string.Empty;
Field_Name = row["COLUMN_NAME"].ToString();

string Field_Description = string.Empty;

Field_Description = Get_Field_Description(TableName, Field_Name);

SQL += "\r\n --" + int_TabIndex.ToString() + "- " + Field_Name + " = " + Field_Description;

}

SQL += "\r\n \r\n" + "";
return SQL;
}
#endregion


تابع List_All_Field مثل بقیه توابع موجود در کلاس نام جدول و روها را گرفته و نام همه فیلدها را نمایش میدهد و این تابع را بصورت txtSQL.Document.Text = SQL_Generator.List_All_Field(tableName,rows) + txtSQL.Document.Text; در فرم اصلی صدا زدم.

تابع Get_Field_Description دو آرگومان ورودی یعنی اسم جدول و اسم فیلد رو میگیره و توضیحات مربوط به فیلد رو برمیگردونه


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

kamran_kenzo
شنبه 23 مرداد 1389, 16:23 عصر
دستتون درد نکنه ... خسته نباشین

mahdi_barani68
شنبه 23 مرداد 1389, 16:51 عصر
یه سوال در رابطه با stored procedure دارم کسی هست کمکم کنه ؟ <ممنون میشم پاسخ دهید>
روزه و نماز همه عزیزان قبول باشه،التماس دعا داریم.

FirstLine
یک شنبه 24 مرداد 1389, 10:24 صبح
با سلام
خوب سوالت رو هم بنویس ببینیم چیه، اگه کسی بدونه حتما کمک میکنه.
با تشکر

araz_pashazadeh
چهارشنبه 27 مرداد 1389, 17:01 عصر
واقعا عالی بود:تشویق:
از این که همچین نرم افزاری را که در اختیار من و دوستان قرار دادین ممنون.

tazarvmmr
دوشنبه 15 شهریور 1389, 22:48 عصر
مرسی آقای کرامتی

m_h_katebi
پنج شنبه 15 مهر 1389, 00:25 صبح
با تشکر فروان از زحمات شما

m.to.sayyari
یک شنبه 25 مهر 1389, 20:30 عصر
سلام-استاد-خيلي ممنون -ما حالا قدر اين برنامه رو مي دونيم.

farhad.ahmadianyazdi
چهارشنبه 28 مهر 1389, 12:59 عصر
با عرض سلام و خسته نباشيد

ميخواستم ببينم كه آيا اين امكان وجود داره كه Stored Procedure هايي كه سمت SQL نوشته ميشه رو DLL كرد يا خير؟

HAMRAHSOFT.IR
جمعه 30 مهر 1389, 20:15 عصر
در ورژن بعدی این امکان رو غیرفعال میکنم، چون ضروری نیست. این از امکانات کد ادیتوری است که استفاده کردم.

همچنین، لازم به ذکره نسخه جدید برنامه با امکان تولید کلاس های لایه DAL و کلی امکانات جدید دیگه بهمراه سورس رو در اینجا منتشر کردم: http://www.codeplex.com/spgen

اگر نظری دارید خوشحال میشم بشنوم.

سلام
امکان داره آخرین ورژن اینجا بزارید

sinmimmim
پنج شنبه 20 آبان 1389, 16:58 عصر
جناب کرامتی برنامه شما رو با sql 2008 تست کردم
connect میشه و table مورد نظر من رو هم نشون میده اما کدی رو generate نمی کنه
یعنی مشکل از اینه که برنامه با 2008 سازگار نیست؟
لطفا راهنمایی بفرمایید
با تشکر

ehsankamkar
سه شنبه 21 دی 1389, 12:25 عصر
سلام ،توانمند باشید.

خیلی ممنونم،واقعا چیز بدرد بخوریه.

hp1361
جمعه 24 دی 1389, 16:04 عصر
سلام

گویا سر استاد خیلی شلوغه و دیگه نگاهی به این تاپیک نمی اندازه!

amin_ir
چهارشنبه 29 دی 1389, 16:23 عصر
65269با تشکر از آقای کرامتی
خیلی حوصله میخواد که هر 14 صفحه را بخوانید در صورتی که در کل این 14 صفحه در جمع شاید حداکثر 10 الی 15 پست کاربردی باشد به هر حال اگر مدیران لطف کنند و تاپیک را کم حجم تر نمایند و آخرین ورژن برنامه را در پست اول آقای کرامتی قرار دهند بقیه کاربران را از خواندن کل 14 صفحه معاف خواهند کرد.
به هر حال تا این لحظه آخرین ورژن برنامه به همراه سورس های آن در ضمیمه قرار داده شد و در صورت عدم دسترسی یا خراب بودن ضمیمه می توانید از این لینک (http://spgen.codeplex.com/) دانلود نمایید.

yafatemeh
دوشنبه 04 بهمن 1389, 12:05 عصر
با عرض سلام خدمت اساتید محترم و جناب DelphiAssistant (http://barnamenevis.member.php?1206-DelphiAssistant)
هنگامی که از کد تولید شده در C# Wrapper Class استفاده می کنم در قسمت DbObject dbo = new DbObject(); خطا می دهد و نوع DbObject برای VisualStudio ناشناس برای رفع این خطا چه کاری باید انجام دهم

amin1838
چهارشنبه 06 بهمن 1389, 10:02 صبح
با تشکر
روی ویندوز 7 کار نکرد.

mhs377
چهارشنبه 20 بهمن 1389, 18:19 عصر
با عرض سلام خدمت اساتید محترم و جناب DelphiAssistant (http://barnamenevis.member.php?1206-DelphiAssistant)
هنگامی که از کد تولید شده در C# Wrapper Class استفاده می کنم در قسمت DbObject dbo = new DbObject(); خطا می دهد و نوع DbObject برای VisualStudio ناشناس برای رفع این خطا چه کاری باید انجام دهم

باید connection string رو درست کنی
من آخرین ورژن رو امتحان کردم کار کرد

yafatemeh
یک شنبه 24 بهمن 1389, 08:43 صبح
با تشکر از شما دوست عزیز می شه لطف کنین بگین Connection String را باید در کجا و به چه صورت نوشت.

nasr
سه شنبه 17 اسفند 1389, 10:29 صبح
هنگامی که از کد تولید شده در C# Wrapper Class استفاده می کنم در قسمت DbObject dbo = new DbObject(); خطا می دهد و نوع DbObject برای VisualStudio ناشناس برای رفع این خطا چه کاری باید انجام دهم

HAMRAHSOFT.IR
سه شنبه 16 فروردین 1390, 22:41 عصر
دوستان روی sql 2008 چرا جواب نمیده و آیا مشه هنگام اتصال بگیم فقط به این دیتا بیس کانکت شو؟

danialafshari
یک شنبه 29 بهمن 1391, 11:34 صبح
سلام
آقا این به چه دات نتی احتیاج داره که سر سیستم من اجرا نمیشه !؟؟
سر سیستمم دات نت 1 هم نصبه !

Reza_Yarahmadi
یک شنبه 29 بهمن 1391, 15:13 عصر
سلام
آقا این به چه دات نتی احتیاج داره که سر سیستم من اجرا نمیشه !؟؟
سر سیستمم دات نت 1 هم نصبه !
این برنامه با دات نت 2 نوشته شده.

danialafshari
یک شنبه 29 بهمن 1391, 23:59 عصر
این برنامه با دات نت 2 نوشته شده.

من سر سیستمم .net 2 نصبه و دارم باهاش برنامه می نویسم
دلیل اجرا نشدنش چیه؟

mehrsa_fr
شنبه 19 اسفند 1391, 13:57 عصر
من چند وقت پیش به همچین برنامه ای نیاز پیدا کردم و قبل از این که برنامه شمارو ببینم اینو نوشتم مدیریت sql (http://barnamenevis.org/showthread.php?387744-Stored-Procedure-Generator)

برنامه شما هم اجرا کردم که به خاطر یک دیتابیس به ارور خورد و دیگه کار نمیکرد دیتابیس از نوع FileStream بود و داخل یک درایو که BitLocker روش بود کار میکرد من خودم برای اینکه با دیتابیس بتونم کار کنم اول قفل درایو باز میکردم و sql هم restart میکردم ولی نمیدونم به چه دلیل برنامه شما این دیتابیسو نمی خوند با اینکه کارایه بالارو انجام میدادم به دیوار میخورد

behrad2012
جمعه 27 دی 1392, 19:12 عصر
با سلام
جناب آقای کرامتی ضمن خسته نباشید سوال؟
بنده کلاس dbobject را به پروژه اضافه کردم خط داخل که برای مسیر کانکشن دیتا بیس هم که هست درست کردم
بعد یک کلاس با نام پست اضافه کردم به پروژه
در بالای صفحه ای که میخوام using NovinMedia.Data را اضافه کردم
نام وقتی که میخوام استفاده کنم می زنم
dataset post=NovinMedia.Data.Layer.Post.equal --- refre....
در حالیکه باید نام توابع داخل کلاس پست را بیاره اما لود نمیکنه چرا؟

behrad2012
جمعه 27 دی 1392, 19:18 عصر
private void LoadPostForm()
{
DataSet dspost= NovinMedia.Data.Layer.Post.
در این حالت هم نام توابع داخلی را لود نمیکنه

behrad2012
جمعه 27 دی 1392, 19:20 عصر
این خط در ابتدای کلاس ساخت میشه و نام توابع را بعضی مواقع میاره اما در هنگام اجرا خطا میده
NovinMedia.Data.Layer.Post dlpost = new NovinMedia.Data.Layer.Post();

homa sadeghi
سه شنبه 08 اردیبهشت 1394, 16:27 عصر
سلام استاد فایل اجرا نمی شه خطای زیر رو میده
​130723