حتما نسخه بعدی Form Generator هم داره دیگه؟ (بگو ان شاء الله!)
Printable View
حتما نسخه بعدی Form Generator هم داره دیگه؟ (بگو ان شاء الله!)
با سلام . و تشکر از زحمات فراوانتان .
یه پیشنهاد کوچیکم من داشتم .این که همه جوره داره مارو تنبل میکنه اگه Server Nameها رو هم خودش لیست کنه یا اونایی رو که قبلا وارد کردیم رو بیاره فکر کنم جالبتر بشه:لبخند:
موقع اتصال به من خطا میده :
مشکل من رفع شد !!
با Run as administrator اجراش کردم مشکلش حل شد ولی اگه یکم رو پردازش استثنا بیشتر کار کنی عالی میشه
ممنون از زحمتی که کشیدید.
زمانی که یک دیتابیس رو به SQL اضافه می کنیم ممکنه اسم اون رو به صورت کامل با مسیرش مینویسه مثل
E:\dbtest\db.mdf
حالا زمانی که من میخواستم از جداولش تو این برنامه استفاده کنم برنامه خطا میده
میشه تو SQL زمانی که میخواییم Atach کنیم Atach As اسمش رو درست کنیم
و مشکل برطرف میشه
فکر کنم با برنامه با \ های توی اسم DB مشکل پیدا میکنه
دقیقا متوجه مشکل نشدم، لطفا بیشتر توضیح دهید.
اگه اسم دیتابیس طولانی باشه (مثلا اسم دیتابیس E:\dbtes\DBt\db.mdf باشه)
برنامه به DB وصل میشه جدولهاش رو هم نشون میده ولی نمیتونه از جداولش پروسیجر بسازه و Error میده
اسم دیتابیس چرا باید اینطوری باشه؟ مگه اسم های رایجی که برای دیتابیس ها در SQL Server استفاده میشه چه مشکلی داره که اینطوری نامگذاری کنیم؟
من هم نمی خوام اسم DB اینطوری باشه:عصبانی++:
ولی گاهی وقتا هنگام Atach کردن یه DB به SQL Server پیشفرض خودش اینطوری اسم دهی می کنه غیر از اینکه خودمون موقع Atach کردن تغییرش بدیم (تو قسمت Atach As)
حالا اگه یادمون رفت تغیرش بدیم یا بلد نبودیم (مثه من:افسرده:) تکلیف چیه؟
ممنون
یاد بگیرید. :چشمک:
ممنون از کارتون. منم قبلا از این برنامه ای که اضافه کردم استفاده می کردم یه Code Generator ساده هست که علاوه بر SPها، سایر layer ها رو هم تولید می کرد. ولی مگه همه Code Generator ها این کارها رو انجام نمی دن؟
برنامه کوچک و جمع و جوریه، اما چند تا اشکال داره:
در برنامه ای که من نوشتم سعی شده نواقص فوق وجود نداشته باشه.
- امکان سفارشی کردن کلاسها و SP ها رو نداره.
- استفاده اش از Microsoft Enterprise Library هم خوبه، هم بد، اشکالش در اینه که کتابخانه مورد استفاده روی همه سرورها نصب نیست.
- SP هاش خیلی استاندارد، و متنوع نیست.
روی تمام جدولهای من درست کار میکنه غیر از یک جدول ، زمانی که 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 کردم ولی باز هم همون خطا اومد
فکر میکنم این مشکل رو در نسخه جدید برطرف کرده باشم، چون با این نسخه ای که الان کار میکنم این Error رو روی جدولی که با Script فوق تولید کردم ندیدم.
نسخه جدید بزودی منتشر میشه.
جناب کرامتی کارت درسته خدایش
من به نوبه خودم تشکر می کنم
با سلام و تشکر از جناب کرامتی در مورد این نرم افزار کارامد
چرا برنامه شما 2 تا تکست باکس داره ؟:لبخند:
http://i32.tinypic.com/2u434ex.jpg
http://i27.tinypic.com/rlzxjm.jpg
deldel del
با سلام
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 میکنه.
موفق باشید.
با سلام
من همین الان این تاپیک رو کشف کردم
راستش میدونم که باید از دکمه تشکر استفاده میکردم اما با اون دکمه نمیشد همه حرفها رو زد
هنوز از این برنامه و قابلیتهاش استفاده نکردم ولی چیزی که از خود برنامه برام جالبتر والبته قابل تقدیرتر بود رفتار و مسئولیت پذیری و بزرگواری جناب دلفی اسیستنت بود واقعا فکر نمیکردم اینقدر آدم لارجی باشه
استاد دستت درد نکنه خیلی کارت درسته
با سلام
و تشکر فراوان از کار قشنگی که کردین
راستش دکمه تشکر رو زدم اما نتونستم به همون بسنده کنم وخواستم یک تشکر ویژه هم بابت این همه صبر و حوصله ای که به خرج دادین و به تک تک پیشنهاد ها و مشکلات دوستان پاسخ مناسب رو دادین و چنیدن نسخه از برنامه تان رو در اختیار همه گزاشتین ازتون تشکر کنم و سعی کنم این رفتار رو ازتون یاد بگیرم
با تشکر مجدد
با سلام خدمت استاد عزیزم
آقا عالی بود خیلی کار خوب و جلبیرو انجام دادید ممنون
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)
موفق باشید.
سلام
ببخشید . فقط میخواستم بگم اشتباه کردم:خجالت: . برنامه شما 4 تا تکست باکس داره:لبخند:
http://i32.tinypic.com/2rcldlw.jpg
من از مطرح کردن این پست هیچ منظور بدی نداشتم . :چشمک:
فقط برام جالب بود . موفق باشید .
در ورژن بعدی این امکان رو غیرفعال میکنم، چون ضروری نیست. این از امکانات کد ادیتوری است که استفاده کردم.
همچنین، لازم به ذکره نسخه جدید برنامه با امکان تولید کلاس های لایه DAL و کلی امکانات جدید دیگه بهمراه سورس رو در اینجا منتشر کردم: http://www.codeplex.com/spgen
اگر نظری دارید خوشحال میشم بشنوم.
اگه میشه لینک دانلود ورژن جدید رو در همین جا بگذارید
2 تا باگ خیلی مهم :
1. زمانی که Primary Key جدول، int نباشه، زمانی که Proc برای Insert ساخته میشه، میاد یه فیلد identity رو میریزه توی یه مقدار int و بر میگردونه، در صورتی که فیلد PK ما اصلا Int نیست (اگه با خود sql server این استورد پروسیجر رو اجرا کنید و خروجی اون رو در یک متغیر بذارید و بعد اون متغیر رو Select کنید، این مطلب رو به شما نشون میگه که به جای Identity مورد نظر، 0 رو بر میگردونه).
2. عملیات Insert و Update در فیلدهای محاسباتی(Computed Columns) نباید انجام بشه(این فیلدها توسط خود Sql Server مقدار دهی میشه).
با احترام،
موفق باشید.
جالب بود ولی خوب ایراداتی هم داره
ولی چیزهایی که من دیدم چرا Exception ها درست Handle نشدن ؟
دوتا ارور داد و برنامه پرید بیرون
زمانی که سرویس Sql server بسته بود دیگری زمانیکه دیتا بیس موجود نبود که متاسفانه handle نشدن ;)
بعد String برای تولید کد :-o این کار یکم بچه گانه بود و از ادم بزرگی مثل شما بعیده ;) بهتره از معادلهایی که در دات نت هست استفاده کنید
(خوب احتمالا" نه 100% پستم پاک میشه :)) ولی خوب من وظیفه داشتم بگم)
خوب چرا شما این کار رو انجام نمیدی؟ سورس رو برای همین منتشر کردم.نقل قول:
بعد String برای تولید کد :-o این کار یکم بچه گانه بود و از ادم بزرگی مثل شما بعیده ;) بهتره از معادلهایی که در دات نت هست استفاده کنید
با سلام
در صورت امکان نمونه برنامه ای جهت استفاده از کلاسهای DAL تولید شده توسط این Generator را بگذارید .
با تشکر .
سلام مي خوام بدونم كه ما از اين Stored Procedure چه استفاده هايي مي كنيم و اينكه قبلا چگونه استفاده مي شد. با تشكر
این SP ها برای انجام 5 عمل اصلی (Insert, Update, Delete, SelectAll, SelectRow) روی رکوردهای جداول دیتابیس ساخته و استفاده میشن.
قبل از تولد SP_Gen مجبور بودیم این SP ها و کلاس لایه Data شون رو دستی بسازیم، اما الان این برنامه این چیزها رو خودکار میسازه و در وقت صرفه جویی میشه.
مرسی واقعا که عالی بود
با اجازه از جناب آقای کرامتی .
یک باگ (البته به نظر من باگه ):
زمانی که یکی از دیتابیس ها Offline باشه در متد RunQuery با خطا مواجه میشه .
فقط کافی که این خطا را هندل کنید ......... سورس را که همه دارید دیگه خودتون اصلاح کنید.
سلام اول در مورد ایراد های که بقیه گرفتن
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 عمل میکنه
در کل بابت برنامه ممنون :قلب:
دستتون درد نکنه DelphiAssistant
چقدر شما با حوصله هستید http://qsmile.com/qsimages/156.gif
من از ولین پست خوندم تا اینجا و تمامه ورژن هاشو dl کردم :لبخند:
من از sql server 2005 استفاده کردم و تو هیچ کدوم از ورژن هاش ، نام سرور رو وارد نکردم و خالی گزاشتم ، و مشکلی ایجاد نشد ، چه نیازی هست localhost بنویسم ؟!!!
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.
سلام samansad ، سورسشو که در اختیار عموم گزاشتن .
من تازه شروع کردم به برنامه نویسی وزیاد بلد نیستم
یه سوالی داشتم
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
سلام
مرسی، نرم افزار عالییه :تشویق:، اما نمیدونم چرا من نمی تونم رو PCایم نصبش کنم:متفکر:
جالبه اما خیلی جای کار داره ، موفق باشید
سلام
برنامه فوق العاده ايه
ولي يه سري مشكلات داره كه اگه رفع بشه بهتره.
اول اينكه امكان Attach كردن نداره.
فقط يك SelectAll داره و همونم زياد كاربرد نداره، در صورتي كه بايد به ازاي هر كليد خارجي، يك SelectAllByFK داشته باشه.
در كلاس ها، فيلد هاي Null چك نميشن كه اگه مقدار خالي بهش پاس داده شد، Exception لازم رو توليد كنه.
در Sp ها، هميشه فيلد اول جهت كليد اصلي در نظر گرفته ميشه، در صورتي كه بعضي ها عادت دارن، اول كليد خارجيشونو بزارن، بعد كليد اصلي.
يه سوال هم داشتم.
شما نمي دونيد خاصيت Description فيلد هارو از كدوم View سيستمي SQL Server ميشه پيدا كرد؟
با سلاو و خسته نباشيد خدمت آقاي كرامتي و همه دوستان كه كمك كردن تا اين برنامه تكميل بشه.
فقط خواستم تشكري كرده باشم و بگم كه از اينكه تو اين سايت با اين مديران دلسوز و زحمتكش عضو هستم به خودم ميبالم.
خیلی جالب بود ممنونم.
از شما برای کمک به آموزش از طریق اینترنت کمال تشکر را دارم و امیدوارم در تمام مراحل زندگی موفق باشید.
واقعا عالي بود
ممنون!!!
يه پيشنهاد دارم!
اگه بشه توي Option نام پيش فرض براي هر SP انتخاب كنيم خوبتر ميشه!!!
مثل من ميخوام به جاي DeleteRow از Delete استفاده كنم!
يا همينطور به جاي InsertRow از Insert
يعني 5 تا sp اي كه ميسازه رو با نام هاي دلخواه ما بزنه
با تشكر!:چشمک:
بابت این برنامه دست شما درد نکنه ولی خوب می شد اگه پروسیجر تولید شده دارای 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