جزئيات ساخت ديتابيس يا لينك كردن با دلفي يا ساخت برنامه با دلفي؟
Printable View
جزئيات ساخت ديتابيس يا لينك كردن با دلفي يا ساخت برنامه با دلفي؟
سلام
چزئيات ساخت ديتابيس رو بذار
چون الآن بحث ما اين هست
و نبايد اين طرف اون طرف بريم
كه گيج نشيم بعديش لينك كردن و بعد
ساخت برنامه.:) ممنون.
مهمترين موردي كه در جزئيات وجود داره اينه كه اولا بتوني تشخيص بدي كه بايد با چند جدول كار كني.
البته اين كار بيشتر تجربيه. ولي هيچ وقت اين حرفمو يادت نره : "هميشه تعداد فيلد محدوده و تعداد ركورد بينهايت".
اين يعني گاهي بهتره يك جدول اضافي ايجاد كنيد بجاي اينكه يك جدول كمتر داشته باشيد با 50 تا فيلد.
ممولا تعدا فيلدها در يك جدول نبايد بيشتر از 15 تا باشه.
اگه بود هميشه شك كنيد كه احتمالا دارين يك جاي كارو اشتباه طراحي ميكنيد.
يك مورد ديگر هم درباره DataBase Desktop بگم كه بد نيست.
در طراحي هر يك از مدلهاي مختلف جدول با اين برنامه اگر روي Type كليك كنيد كليه مقادير مجازو نشونتون ميده.
البته معمولا از لحاظ ماهيت بيشتر با همان انواعي كه تعريف كردم كار داريد.
سلام
يه نكته بود كه توجه نكردي.
و خودم هم گيج شدم و حالا
حل شده مكان DataBase Des هست
كه از Tool>Database Desktop اينجا
بايد پيداش كنيد.ممنون:)
معمولا تو خود Start Menu بخش Delphi آيكونشو داره.
دوستان چه جوري ميشه يه ديتا بيس و يا يه بانك اطلاعاتي از تو دلفي و در زمان اجرا ساخت
چند وقت پيش روي يك سايت يك كامپوننت ديدم كه اين كارو ميكرد.
ولي اين معمولا كار بسيار نادريه.
مگر اينكه بخواي برنامه طراحي ديتابيس بسازي.
اونم با وجود برنامه هايي مثل اكسس و اس كيو ال عاقلانه نيست.
درباره كاري كه مي خواي بكني توضيح بده تا بيشتر راهنماييت كنم.
سلام دوستان.
درس جدید : دیتابیسهای چند جدوله.
نمونه بارز برای ساخت چنین جدولی اکسس و اس کیو ال است.
در این نرم افزارها چند جدول در یک فایل قرار میکیرند.
برای دسترسی به این جدولها دو مرحله وجود دارد.
1. مرحله اتصال دیتابیس به دلفی.
2. مرحله تفکیک جدولها و استفاده از آنها.
در مرحله 1 از کامپوننتهای ADO استفاده میشود و مهمترین این کامپوننتها ADOConnection است.
این کامپوننت برای اتصال استفاده می شود و برای ایجادارتباط باید روی کامپوننت دبل کلیک کنید و صفحه ای باز میشود که در جلوی بخش Connection String یک دکمه Build وجود دارد که به وسیله آن ابزار ارتباطی انتخاب میشود.
در مرحله دوم از ADODataSet استفاده میگردد. که در آن نامه ADO که روی صفحه قرار داده شده انتخاب میگردد و در يكي از بخشهاش ميتونين به كمك خود دلفي فيلدهاي مورد نظر خودتون رو انتخاب كنيد.
باقی مراحل توسط بخش DataControl صورت میگیرد که قبلا درباره آن توضیح داده شده.
برای دلفی Table که در بخش BDE است ویا ADOTable که طریقه استفاده از آن توضیح داده شد، مشابهند و کار با آنها یکسان میباشد.
با سلام
من سعي كردم يك بانك اطلاعاتي اكسس را با Microsoft Jet 4.0 OLE DB Provider به asp.net متصل كنم اما بعد از اجرا error ذيل ظاهر مي شود،ممنون ميشوم اگر كسي راهنمائي كند مشكل كجاست؟ ضمنا شايد نكات ذيل هم براي تشخيص مشكل مفيد باشد:
- در هنگام اتصال پاسخ Test Connection بصورت Test Connection Succecded است.
-بعد از اتصال بانك، يك ايكون بانك اكسس همنام اما با يك علامت قفل در گوشه آن هم ايجاد مي شود و اگر اتصال را قطع كنيم آن ايكون هم ديده نمي شود.
-براي برقراري ارتباط با DataGrid كد ذيل را نوشته ام:
Dim myReader As System.Data.OleDb.OleDbDataReader
OleDbConnection1.Open()
myReader = OleDbCommand1.ExecuteReader()
DataGrid1.DataSource = myReader
DataGrid1.DataBind()
Server Error in '/ali-85-5-2' Application.--------------------------------------------------------------------------------
The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\nasehi.KCC-4F4E3221FC4\Desktop\ali\ali.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\nasehi.KCC-4F4E3221FC4\Desktop\ali\ali.mdb'. It is already opened exclusively by another user, or you need permission to view its data.
Source Error:
Line 46: Dim myReader As System.Data.OleDb.OleDbDataReader
Line 47:
Line 48: OleDbConnection1.Open()
Line 49: myReader = OleDbCommand1.ExecuteReader()
Line 50: DataGrid1.DataSource = myReader
Source File: c:\inetpub\wwwroot\ali-85-5-2\WebForm1.aspx.vb Line: 48
Stack Trace:
[OleDbException (0x80004005): The Microsoft Jet database engine cannot open the file 'C:\Documents and Settings\nasehi.KCC-4F4E3221FC4\Desktop\ali\ali.mdb'. It is already opened exclusively by another user, or you need permission to view its data.]
System.Data.OleDb.OleDbConnection.ProcessResults(I nt32 hr)
System.Data.OleDb.OleDbConnection.InitializeProvid er()
System.Data.OleDb.OleDbConnection.Open()
ali_85_5_2.WebForm1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\ali-85-5-2\WebForm1.aspx.vb:48
System.Web.UI.Control.OnLoad(EventArgs e)
System.Web.UI.Control.LoadRecursive()
System.Web.UI.Page.ProcessRequestMain()
راحتترین راه اصلاح شما استفاده از ODBC است.
از اين لينك استفاده كنيد و نتيجه رو خبر بدين.
راستي اينجا بخش دلفيه و اكثر دوستان با كدها asp .net آشنايي ندارن.
فكر ميكنم علامت قفل هم كه ظاهر ميشه يه خاطرلينك يك جانبه شماست.
يعني فقط يك دستگاه ميتونه به بانك لينك بشه.
باسلام خدمت شمادوست عزيز:
اولا واقعا خسته نباشي خيلي جالب بود
ثانيا اميدوارم ادامه داشته باشد
دوستان. لطفا با پستهاي الكي اين تاپيك رو شلوغ نكنيد.
راستي اين تاپيك رو براي چند تا از دوستان كه با اكسس مشكل داشتند آپديت كردم كه تو چشم باشه و جوابشون رو بگيرند.
دستت درد نكنه من مشكلم با اكسس حل شد
پس چرا ادامه نميدي ؟؟؟
ديگه نميدونم از كجا بايد بگم.
اگه دوستان همين درسهايي كه تا اينجا دادم رو ادامه بدن و فقط در همين حد هم كار كنن 100 تا مشكل گير ميكنن.
چون كسي سوالي نميپرسه حس كردم كه ديگه كسي نميخونه و ادامه دادنش خيلي فايده نداره.
اگه كار كردي و ديدي در مورد خاصي آموزش نيار هست موضوع كليشو بگو تا درس اون قسمت رو بدم.
سلام
خودت گفته بودي تيله و ...
به صفحه هاي قبل بري دقيق يادت مياد
من اين چيزي كه گفتي رو پيدا نكردم.
اگه شماره پستشو بزاري ممنون ميشم.
راستي اگه فكر ميكنين جايي كم توضيح دادم و يا بد نوشتم بگين تا اون بخش رو دوباره آموزش بدم.
پست 40
اين ها رو قرار بوده بزاري
نقل قول:
جزئيات ساخت ديتابيس يا لينك كردن با دلفي يا ساخت برنامه با دلفي؟
پست 18
اين هم از اون كه دنبالش بودينقل قول:
دیتا سورست به تیبل لینک هست؟
توی تیبل فایلو معرفی کردی؟
سلام
تا حدودی مشکلاتم حل شده
حتی اون مشکلی که توی پست 15 بهت گفتم
اما وقتی می خواهم یک FieldName رو تعیین کنم
این ارر رو میده : Table does not exist.
مشکلش چیه؟
لطف كن و نوع ديتابيسي هم كه كار ميكني بنويس تا بدونم چي بگم.
سلام
دوست عزيز من يه جدول پارادوكس دارم كه مي خواهم بر روي اون ----- اعمال كنم
ميخواهم از اطلاعات جدول بعد از ----- شدن پرينت بگيرم ( يعني اينكه تنها اون اطلاعاتي كه من محدودشان مي كنم پرينت بشن )
با استفاده از setrang اين كار رو كردم اما موضوع اينه كه من دوبار ----- رو مي خواهم اعمال كنم
من دو تا فيلد دارم 1- فيلد تاريخ 2- فيلد شماره
اول بر اساس تاريخ ( ماه ) ----- بشن و بعد هم بر اساس فيلد شماره
خيلي ضروريه لنگه لنگم
منتظرم
ممنون
از كد زير براي ----- تركيبي استفاده كن.
مشكلت حل ميشه.
براي پرينت كردن هم بايد از سيستمهاي گزارش گيري استفاده كني كه فكر نكنم مشكلي داشته باشي.
اگه مشكلي بود بهم بگو تا اونم بگم.
اين روش براي فيلترهاي تركيبي است و براي تاريخ ايراني استفاده ميشود.کد:
table1.filter := 'datefield = ''../../..'' and number = YourNo'
اگر تاريخ ايراني نيست ديگر علامتهاي ' رو وسط ----- نزار.
تست كن و خبرشو بهم بده.
سلام
براي طراحي ديتابيس از پارادكس استفاده كردم
برايTable Type هم ديتابيس و براي DatabaseName
از dBASE Files استفاده كردم
حالا لطف كن و مشكل رو بگو
اگه يك كامپوننت Table روي فرم يا توي ديتاماژول بزاري ميتوني كارايي كه ميگم رو به ترتيب انجام بدي و مشكلت حل بشه.
1. توی بخش DataBase Name بايد اسم فايلي كه طراحي كردي رو بنويسي. اون فايلم جايي كه پروژت اونجاست كپي كن.
2. در بخش TableType نوع پارادوكس رو انتخاب كن.
3. باقي تنظيماتي كه لازم داري رو ميتوني به صورت اختياري انجام بدي و توي درسهاي اوليه گفتم. ولي اجباري نيستند.
4. اين جدول رو به يك DataSource لينك كن.
5. از كامپوننتهايي كه براي خواندن و نوشتن روي ديتابيس هست استفاده كن. مثل DBEdit,DbText,DBGride و ...
موفق باشي.
سلام
مرد مباح عزيز اين كاري رو كه گفتي كردم اما ارور داد
من دو تا فيلد تو جدولم دارم به نام month براي ماه كه بصورت ( فروردين و ارديبهشت و خرداد و ... ) هست و ديگري
klbrgnum كه شماره در اون ذخيره ميشه حالا من مي خواهم جدولم رو بر اساس اين دو تا ----- كنم با توجه به اينكه اين ماه و شماره از طرف كاربر بوسيله يه اديت و يه كومبو باكس صورت مي گيره
دستوري كه شما گفتيد و نوشتم به اين صورت
[PHP]
datamodule1.Tablemaindata.Filter:='month= ''comboboxmon.text'' and klbrgnum = editklbrgnum.text';
[/PHP]
اروري هم كه ميده اينه
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ممنون و منتظرم ضروري
بايد به اين صورت بنويسي:
بعد از تست جوابشو حتما بزار.کد:
datamodule1.Tablemaindata.Filter:='month= '''+comboboxmon.text+''' and klbrgnum = '+editklbrgnum.text;
اين كد بايد جواب بده.
سلام
وقتش رسيده فرمان بگي
يعني فرمان هايي كه براي ديتا بيس بكار ميرن
منتظريم
سلام
مرد مباح عزيز
ديگه ارور نميده اما تو صفحه پرينت هيچ چيزي نمياد
يه سوالي برام پيش اومد . من وقتي كه از setrange استفاده ميكنم گويي فقط تمام اون فيلد هايي كه با شرط من صدق ميكنه توي جدول من هستند و بقيه قابل ديدن نيستند بنابر اين من ميتونم دستور بدم كه از تمام محتويات جدول پرينت بگيره و بعدش هم دستور setrange رو كنسل ميكنم
حالا ايا اين ----- كردن هم همين كار رو مي كنه ؟
اگه نه پس بي خيال اين روش بشم
ممنون و منتظرم ضروري
دقيقا همين كارو انجام ميده.
براي غير فعال كردن هم ميشه از يكي از كدهاي زير استفاده كرد.
البته ميكين چيزي نشون نميده دليلش اينه كه فيلد يا فيلدهايي با اون مشخصات توي ديتابيس وجود نداره.
کد:
table1.filter := '';
table1.Filterd := false;
طبق تقاضاي دوستان چندتا از فرمانهاي مهم توي ديتابيس رو مينويسم.
1. Filter يكي از مهمترين و ساده ترين دستوراتي است كه در ديتابيسها باهاش سروكار داريم.
كارش مشخصه و توي چند پست قبلي دربارش صحبت شد.
2. Findfirst كه بعد از اينكه فيلتري براي يافتن اولين ركورد با مشخصاتي كه توي ----- هست استفاده ميشه.
3. findnext , FindPrior , FindLast هم مشابه بالا هستند ولي از اسمشون معلومه كه چه كارايي ميكنن.
چند كد معمول براي تغييراتي كه روي ديتابيس اعمال ميشه كه اونا رو هم مينويسم.
1. Edit كه وقتي قراره به صورت كدي محتويات ديتابيس تغيير كنه استفاده ميشه.
2. Append , Insert كه براي ايجاد يك ركورد جديد و وردو اطلاعات استفاده ميشن كه البته اولي هر جايي كه ركورد باشه يك ركورد خالي باز ميكنه و دومي در انتهاي جدولتون.
3. Delete كه براي پاك كردن ركورد جاري استفاده ميشه.
4. Post,ApplyUpdates كه براي ارسال و ذخيره تغييرات اعمالي در ديتابيس استفاده ميشن كه تفاوتشون هم در CatchUpdate است.
دوستان اگه كاري يا سوالي براتون پيش اومد خبر بدين
سلام
من هنوز نخوندم اما اين دستورات را روي كدوم كمپننت
بنويسيم؟
همه اين دستورات مربوط به Table است.
البته توي DataSet,Quary و ... هم مشترك است.
تقريبا تملم ديتا اكسس ها اين فرامين رو ساپورت ميكنن.
چند تا از دوستان در مورد SQL و لينك اون مشكلاتي داشتند كه من يك توضيح مختصر دربارش ميدم.
1. بايد از ADOConnection استفاده كرد و درايور SQL رو انتخاب كرد.
2. مراخلي كه براي كانلت كردن ديتابيس اكسس توي پست شماره 48 گفته شده و توي پست 63 اطلاعات تكميلي براش رار داده شده استفاده كنيد.
استفاده كنيد و خبرشو بهم بدين
دوست عزيز من يك ديتابيس در اس كيو ال دارم كه كه يك تيبل با دو فيلد دارد ميخواهم در دلفي اين تيبل را براي من بياورد. امكانش هست كه توضيح كامل بدين.در واقع يك ديكشنري هست. من در كامپوننت data access , data source دارم ولی table ندارم.
توي ADO Tab بايد بري. و بايد از DataSet استفاده كني.
تيبل براي ديتابيسهاي تك جدوله استفاده ميشه براي اكسس و SQL بايد از بخش ADO و Dataset استفاده كني.
توضيحات بيشتر هم در پست قبليم دادم.
دوست عزيز سلامنقل قول:
نوشته شده توسط مرد مباح
ممكنه تنظيمات ADODataSet را بفرماييد.
سلام
مباح جون لطفآ يه كاري كن
دستور اينكه چطوري يه ركورد اضافه كنيم
و چطوري اطلاعات رو ذخيره كنيم رو بگو
منتظرم
منظور شما از تنظيمات چيه؟نقل قول:
نوشته شده توسط roonak2006
يك سري توضيحات درباره تنظيمات همه نوع ديتاست دادم كه فكر كنم 7-8 تا پست قبلتر باشه.
اگه برات كافي نيست سوالتو درست بپرس تا بدونم دقيقا چي ميخواي.
نقل قول:
نوشته شده توسط soldier
رفيق. من مراحل كاري رو توي 3 پست قبلتر دادم ولي. چشم.
1. بايد از فرمان زير براي اضافه كردن استفاده كني.
البته اين پيش فرز كه تمام لينكهايي كه قبلا گفتم رو انجام داده باشي.
2. از فرمان زير براي 1ر كردن مقاديري كه توي ديتابيس قرار ميگيره استفاده كن.کد:DataSet1.append
البته اگه جنس فيلد عدد باشه بايد تبديل كني به مقدار عددي.کد:dataset1.fieldvalue['Your Field Name'] := Edit.text
در ضمن ميتوني از DBEdit هم استفاده كني.
ولي من حالت پيشرفشو برات نوشتم.
3. براي انتقال به ديتابيس و در واقع ذخيره اطلاعات از فرمان زير استفاده كن
البته اين كدها درباره همه نوع ديتابيسي جواب ميده ولي من براي DataSet نوشتم كه براي كاراي اينترنتي هم استفاده ميشه و با اكسس لينك ميشه.کد:dataset1.post
موفق باشيد وخبرشو بهم بديد.
سلام
اي بابا همون دستو اول براي ايجاد يك ركورد خطا مي گيره
Table1: Cannot perform this operation on a closed dataset.
اين هم از ارر كه از تيبل ميگيره!
در ضمن از همون دستور فيلد وليو هم ارر ميگيره
يه ديتابيس خواستيم بسازيم شد انبار ارر!
راستي ذخيره كردن ديتابيس را در يك فايل رو هم بگو
خوب دو تا كار ميتوني بكني.
ميتوني توي كامپوننت بري و خاصيت Active رو true كني و كار معمولتر اينه كه توي كد وقتي لازم داري اونو اكتيو كني.