PDA

View Full Version : مشكل در برنامه نويسي و فيلدهاي نرم افزار كتابداري



DlphIran
پنج شنبه 12 شهریور 1388, 10:30 صبح
سلام
من دارم يه نرم افزار كتابداري مي نويسم با دلفي 6 و اس كيو ال سرور 2000 ، فيلداي ركورد اصلي برنامه حدود 70 فيلد هست كه بيشترشون nvar با سايز 70 هستن .

اول ) با اين 70 فيلد مشكلي با جستجوي سريع اطلاعات پيش نمياد ، اگه آره ، راهي هست كه بشه جستجوي رو سريعتر انجام داد؟

دوم ) موقع ذخيره اطلاعات پيغام access violation at address 4DD10C50 in madule 'sqloledb.dll' رو نمايش ميده .

در ضمن ، من تماما از دستورات اس كيوال براي ذخيره حذف تغييرات و همچنين از adoquery استفاده ميكنم.

لطفا راهنماييم كنيد. :بوس:

hadisalahi2
پنج شنبه 12 شهریور 1388, 21:55 عصر
با سلام
برای تعریف جداول در صورتی که شما با مباحث اولیه طراحی بانک اطلاعاتی آشنا باشید می تونید ، فیلدها رو در سطوح مختلف نرمال سازی کاهش بدید و آنها رو در چند تا جدول ذخیره کنید.
مطلب بعد اینکه اگه شما نرمال سازی رو انجام دادید و تعداد فیلدهای جدولتون همون 70 فیلده ، باید خدمتتون عرض کنم که نه هیچ مشکلی بوجود نمی یاد.
فقط شما باید هنگام جستجو و استفاده از دستور Select فقط فیلدهایی رو از جدول یا جداول انتخاب کنید که نیاز دارید.
در مورد پیغام خطا هم فکر کنم مشکل از نسخه دلفی باشه و احتمالا نمی تونه موتور بانک اطلاعاتی Sql Server رو راه اندازی کنه.
در ضمن استفاده از دستورات اس کیو ال ، در صورت استفاده صحیح باعث افزایش سرعت کار با بانک اطلاعاتی و داده های اونها میشه.

DlphIran
شنبه 14 شهریور 1388, 09:57 صبح
كسي درباره پيغام خطايي كه اون بالا نوشتم اطلاعي نداره ؟

در مورد استفاده از دستورات اس كيوال ، بهتره از insert ,update عادي adoquery استفاده كنم يا همين دستورات اس كيوال مناسبه؟

delphiprog3000
شنبه 14 شهریور 1388, 11:54 صبح
كسي درباره پيغام خطايي كه اون بالا نوشتم اطلاعي نداره ؟

در مورد استفاده از دستورات اس كيوال ، بهتره از insert ,update عادي adoquery استفاده كنم يا همين دستورات اس كيوال مناسبه؟

با سلام. AV ها ارورهایی هستند غیر قابل پیش بینی.
1-در مورد ذخیره و نحوه ذخیره میشه مثالی قرار بدید.

2-تفاوتی در دستورات نیست اما بسته به نوع استفاده شما در پروژه دارد.

موفق باشید...........

hadisalahi2
شنبه 14 شهریور 1388, 13:24 عصر
با سلام
پیشنهاد میکنم دوباره دلفی رو نصب کنید.
برای دستورات هم ، اگه تعداد درج ، حذف و ویرایش ها زیاده حتما باید از دستور SQlاستفاده کنید تا سرعت مطلوب باشه و لی برای رکوردهای کم میتونید از روش معمول در ADQUery استفاده کنید.

DlphIran
یک شنبه 15 شهریور 1388, 15:26 عصر
اينم نمونه درج اطلاعات در جدول ket
sql.Clear;
sql.Add('insert into ket(nm,nm1,noe,sabt,je,te,com,tes,m,dy,dm,dd,sar1, tsr1,dt1,df1,o1,nv1,tnv1,nv2,tnv2,nv3,tnv3,nv4,tnv 4,mt1,mt2,mt3,mt4,v1,v2,v3,v4');
sql.Add(',nsh1,mnsh1,dnsh1,nsh2,mnsh2,dnsh2,nsh3,m nsh3,dnsh3,isbn,mm,g1,g2,g3,mo1,mo2,mo3,zmo1,zmo2, zmo3,noco,c1,c2,c3,c4,c5,c6,c7,c8,af1,af2,af3,af4, ccod,karbar,dys,dms,dds,cod)');
sql.Add('values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,: l,:m,:n,:o,:p,:q,:r,:s,:t,:u,:v,:w,:x,:y,:z,:aa,:a b,:ac,:ad,:ae,:af,:ag,:ah,:ai,:aj,:ak,:al,:am,:an, :ao,:ap,:aq,:ar,:as,:at,:au,:av,:aw,:ax,:ay,:az,:b a,:bb,:bc,:bd,:be');
sql.Add(',:bf,:bg,:bh,:bi,:bj,:bk,:bl,:bm,:bn,:bo, :bp,:bq,:br,:bs,:bt,:bu,:bv,:bw,:bx,:by,:bz,:ca,:c b)');
parameters.ParamByName('a').Value:=label18.Caption ;
parameters.ParamByName('b').Value:=label14.Caption ;
parameters.ParamByName('c').Value:=combobox1.Text;
parameters.ParamByName('d').Value:=edit1.Text;
parameters.ParamByName('e').Value:=edit26.Text;
parameters.ParamByName('f').Value:=edit27.Text;
parameters.ParamByName('g').Value:=edit28.Text;
parameters.ParamByName('h').Value:=edit68.Text;
parameters.ParamByName('i').Value:=edit32.Text;
parameters.ParamByName('j').Value:=edit31.Text;
parameters.ParamByName('k').Value:=edit30.Text;
parameters.ParamByName('l').Value:=edit29.Text;
parameters.ParamByName('m').Value:=edit6.Text;
parameters.ParamByName('n').Value:=edit21.Text;
parameters.ParamByName('o').Value:=edit63.Text;
parameters.ParamByName('p').Value:=edit62.Text;
parameters.ParamByName('u').Value:=edit17.Text;
parameters.ParamByName('v').Value:=edit2.Text;
parameters.ParamByName('w').Value:=edit33.Text;
parameters.ParamByName('x').Value:=edit54.Text;
parameters.ParamByName('y').Value:=edit34.Text;
parameters.ParamByName('z').Value:=edit69.Text;
parameters.ParamByName('aa').Value:=edit35.Text;
parameters.ParamByName('ab').Value:=edit70.Text;
parameters.ParamByName('ac').Value:=edit36.Text;
parameters.ParamByName('ad').Value:=edit71.Text;
parameters.ParamByName('ae').Value:=edit37.Text;
parameters.ParamByName('af').Value:=edit38.Text;
parameters.ParamByName('ag').Value:=edit39.Text;
parameters.ParamByName('ah').Value:=edit40.Text;
parameters.ParamByName('ai').Value:=edit64.Text;
parameters.ParamByName('aj').Value:=edit65.Text;
parameters.ParamByName('ak').Value:=edit66.Text;
parameters.ParamByName('al').Value:=edit67.Text;
parameters.ParamByName('am').Value:=edit42.Text;
parameters.ParamByName('an').Value:=edit43.Text;
parameters.ParamByName('ao').Value:=edit45.Text;
parameters.ParamByName('ap').Value:=edit56.Text;
parameters.ParamByName('aq').Value:=edit55.Text;
parameters.ParamByName('ar').Value:=edit44.Text;
parameters.ParamByName('as').Value:=edit59.Text;
parameters.ParamByName('at').Value:=edit58.Text;
parameters.ParamByName('au').Value:=edit57.Text;
parameters.ParamByName('av').Value:=edit46.Text;
parameters.ParamByName('aw').Value:=edit41.Text;
parameters.ParamByName('ax').Value:=edit5.Text;
parameters.ParamByName('ay').Value:=edit20.Text;
parameters.ParamByName('az').Value:=edit24.Text;
parameters.ParamByName('ba').Value:=edit15.Text;
parameters.ParamByName('bb').Value:=edit19.Text;
parameters.ParamByName('bc').Value:=edit23.Text;
parameters.ParamByName('bd').Value:=edit16.Text;
parameters.ParamByName('be').Value:=edit18.Text;
parameters.ParamByName('bf').Value:=edit22.Text;
parameters.ParamByName('bg').Value:=combobox2.Text ;
parameters.ParamByName('bh').Value:=edit14.Text;
parameters.ParamByName('bi').Value:=edit13.Text;
parameters.ParamByName('bj').Value:=edit12.Text;
parameters.ParamByName('bk').Value:=edit11.Text;
parameters.ParamByName('bl').Value:=edit10.Text;
parameters.ParamByName('bm').Value:=edit9.Text;
parameters.ParamByName('bn').Value:=edit8.Text;
parameters.ParamByName('bo').Value:=edit3.Text;
parameters.ParamByName('bp').Value:=edit47.Text;
parameters.ParamByName('bq').Value:=edit48.Text;
parameters.ParamByName('br').Value:=edit49.Text;
parameters.ParamByName('bs').Value:=edit50.Text;
parameters.ParamByName('bw').Value:=edit3.Text+' '+edit8.Text+' '+edit9.Text+' '+edit10.Text+' '+edit11.Text+' '+edit12.Text+' '+edit13.Text+' '+edit14.Text;
parameters.ParamByName('bx').Value:=label48.Captio n;
parameters.ParamByName('by').Value:=form1.edit1.Te xt;
parameters.ParamByName('bz').Value:=form1.edit2.Te xt;
parameters.ParamByName('ca').Value:=form1.edit3.Te xt;
parameters.ParamByName('cb').Value:=edit2.Text;
execsql;

چطوره ؟ از نظر سرعت مشكلي پيش نمي ايد؟

SayeyeZohor
دوشنبه 16 شهریور 1388, 10:32 صبح
اينم نمونه درج اطلاعات در جدول ket
sql.Clear;
sql.Add('insert into ket(nm,nm1,noe,sabt,je,te,com,tes,m,dy,dm,dd,sar1, tsr1,dt1,df1,o1,nv1,tnv1,nv2,tnv2,nv3,tnv3,nv4,tnv 4,mt1,mt2,mt3,mt4,v1,v2,v3,v4');
sql.Add(',nsh1,mnsh1,dnsh1,nsh2,mnsh2,dnsh2,nsh3,m nsh3,dnsh3,isbn,mm,g1,g2,g3,mo1,mo2,mo3,zmo1,zmo2, zmo3,noco,c1,c2,c3,c4,c5,c6,c7,c8,af1,af2,af3,af4, ccod,karbar,dys,dms,dds,cod)');
sql.Add('values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,: l,:m,:n,:o,:p,:q,:r,:s,:t,:u,:v,:w,:x,:y,:z,:aa,:a b,:ac,:ad,:ae,:af,:ag,:ah,:ai,:aj,:ak,:al,:am,:an, :ao,:ap,:aq,:ar,:as,:at,:au,:av,:aw,:ax,:ay,:az,:b a,:bb,:bc,:bd,:be');
sql.Add(',:bf,:bg,:bh,:bi,:bj,:bk,:bl,:bm,:bn,:bo, :bp,:bq,:br,:bs,:bt,:bu,:bv,:bw,:bx,:by,:bz,:ca,:c b)');
parameters.ParamByName('a').Value:=label18.Caption ;
parameters.ParamByName('b').Value:=label14.Caption ;
parameters.ParamByName('c').Value:=combobox1.Text;
parameters.ParamByName('d').Value:=edit1.Text;
parameters.ParamByName('e').Value:=edit26.Text;
parameters.ParamByName('f').Value:=edit27.Text;
parameters.ParamByName('g').Value:=edit28.Text;
parameters.ParamByName('h').Value:=edit68.Text;
parameters.ParamByName('i').Value:=edit32.Text;
parameters.ParamByName('j').Value:=edit31.Text;
parameters.ParamByName('k').Value:=edit30.Text;
parameters.ParamByName('l').Value:=edit29.Text;
parameters.ParamByName('m').Value:=edit6.Text;
parameters.ParamByName('n').Value:=edit21.Text;
parameters.ParamByName('o').Value:=edit63.Text;
parameters.ParamByName('p').Value:=edit62.Text;
parameters.ParamByName('u').Value:=edit17.Text;
parameters.ParamByName('v').Value:=edit2.Text;
parameters.ParamByName('w').Value:=edit33.Text;
parameters.ParamByName('x').Value:=edit54.Text;
parameters.ParamByName('y').Value:=edit34.Text;
parameters.ParamByName('z').Value:=edit69.Text;
parameters.ParamByName('aa').Value:=edit35.Text;
parameters.ParamByName('ab').Value:=edit70.Text;
parameters.ParamByName('ac').Value:=edit36.Text;
parameters.ParamByName('ad').Value:=edit71.Text;
parameters.ParamByName('ae').Value:=edit37.Text;
parameters.ParamByName('af').Value:=edit38.Text;
parameters.ParamByName('ag').Value:=edit39.Text;
parameters.ParamByName('ah').Value:=edit40.Text;
parameters.ParamByName('ai').Value:=edit64.Text;
parameters.ParamByName('aj').Value:=edit65.Text;
parameters.ParamByName('ak').Value:=edit66.Text;
parameters.ParamByName('al').Value:=edit67.Text;
parameters.ParamByName('am').Value:=edit42.Text;
parameters.ParamByName('an').Value:=edit43.Text;
parameters.ParamByName('ao').Value:=edit45.Text;
parameters.ParamByName('ap').Value:=edit56.Text;
parameters.ParamByName('aq').Value:=edit55.Text;
parameters.ParamByName('ar').Value:=edit44.Text;
parameters.ParamByName('as').Value:=edit59.Text;
parameters.ParamByName('at').Value:=edit58.Text;
parameters.ParamByName('au').Value:=edit57.Text;
parameters.ParamByName('av').Value:=edit46.Text;
parameters.ParamByName('aw').Value:=edit41.Text;
parameters.ParamByName('ax').Value:=edit5.Text;
parameters.ParamByName('ay').Value:=edit20.Text;
parameters.ParamByName('az').Value:=edit24.Text;
parameters.ParamByName('ba').Value:=edit15.Text;
parameters.ParamByName('bb').Value:=edit19.Text;
parameters.ParamByName('bc').Value:=edit23.Text;
parameters.ParamByName('bd').Value:=edit16.Text;
parameters.ParamByName('be').Value:=edit18.Text;
parameters.ParamByName('bf').Value:=edit22.Text;
parameters.ParamByName('bg').Value:=combobox2.Text ;
parameters.ParamByName('bh').Value:=edit14.Text;
parameters.ParamByName('bi').Value:=edit13.Text;
parameters.ParamByName('bj').Value:=edit12.Text;
parameters.ParamByName('bk').Value:=edit11.Text;
parameters.ParamByName('bl').Value:=edit10.Text;
parameters.ParamByName('bm').Value:=edit9.Text;
parameters.ParamByName('bn').Value:=edit8.Text;
parameters.ParamByName('bo').Value:=edit3.Text;
parameters.ParamByName('bp').Value:=edit47.Text;
parameters.ParamByName('bq').Value:=edit48.Text;
parameters.ParamByName('br').Value:=edit49.Text;
parameters.ParamByName('bs').Value:=edit50.Text;
parameters.ParamByName('bw').Value:=edit3.Text+' '+edit8.Text+' '+edit9.Text+' '+edit10.Text+' '+edit11.Text+' '+edit12.Text+' '+edit13.Text+' '+edit14.Text;
parameters.ParamByName('bx').Value:=label48.Captio n;
parameters.ParamByName('by').Value:=form1.edit1.Te xt;
parameters.ParamByName('bz').Value:=form1.edit2.Te xt;
parameters.ParamByName('ca').Value:=form1.edit3.Te xt;
parameters.ParamByName('cb').Value:=edit2.Text;
execsql;

چطوره ؟ از نظر سرعت مشكلي پيش نمي ايد؟



چرا از دستورات append , Edit , ... استفاده نمی کنی ؟
هیچ فرقی نمی کنه دستوراتت هم منسجم تر می تونی بنویسی

DlphIran
سه شنبه 17 شهریور 1388, 11:48 صبح
تا حالا با اون دستورات كار نكردم .

در مورد يكي از مشكلاتم كه
موقع ذخيره اطلاعات پيغام access violation at address 4DD10C50 in madule 'sqloledb.dll' رو نمايش ميده .
اس كيو ال سرور رو دوباره نصب كردم بازم موقع ذخيره و بروزرساني اطلاعات همين پيغام خطا رو ميده

البته اينو بگم ، نرم افزارهاي ديگرم كه تعداد فيلد كمتري دارن اطلاعات رو براحتي ذخيره و بروزرساني ميكنن اما اين يكي شايد بخاطر 70 فيلد با حجم بالا باشه ،‌
چطور ميشه اين مشكل رو حل كرد؟

DlphIran
چهارشنبه 18 شهریور 1388, 16:04 عصر
كسي در مورد مشكل من اطلاعاتي نداره ؟ منظورم پيغام خطايي هست كه نشون ميده

hadisalahi2
چهارشنبه 18 شهریور 1388, 17:39 عصر
با سلام
دوست عزیز قبلا هم گفتم، مشکل شما از تعداد زیاد فیلدهای جدولتون نیست.
من خودم با جداولی کار میکنم که حدود 60 فیلد داره و 3 فیلد از نوع عکس هم داره ولی هیچ مشکلی در ذخیره اونها در جدول ندارم.
به نظر من شما از چیزی میخواهید استفاده کنید که برنامه نمیتونه به اون دسترسی داشته باشه.
بهتره برنامه تون رو اینجا بگذارید تا بچه ها یه نگاهی بهش بندازند ولی من مطمئن هستم که مشکل از تعداد فیلدهای جدولتون نیست.
در ضمن به شما اکیدا توصیه میکنم مباحث طراحی بانک اطلاعاتی و مباحث نرمال سازی رو حتما مطالعه کنید. چون طراحی و کد نویسی بانک اطلاعاتی بدون داشتن معلومات اولیه اون بعدا براتون بسیار درد سر ساز و کد نویسی رو براتون بسیار خسته کننده و وقت گیر میکنه.
یا حق

DlphIran
پنج شنبه 19 شهریور 1388, 09:15 صبح
من نمونه درج اطلاعات رو گذاشتم توي برنامه ، پيغام خطا از اين قسمت گرفته ميشه ،‌


دوست ديگه اي نيست كه بدونه چطور ميشه اين پيغام خطا رو رفع كرد؟

DlphIran
شنبه 21 شهریور 1388, 08:16 صبح
كسي نيست بگه مشكل از كجاست.
موقع ذخيره اطلاعات پيغام access violation at address 4DD10C50 in madule 'sqloledb.dll' رو نمايش ميده . برنامه هاي ديگه ام درست ذخيره مي كنن اما اين برنامه ام با مشخصاتي كه در بالا گفتم مشكل داره موقع ذخيره يا ذخيره تغييرات:عصبانی++:

hadisalahi2
سه شنبه 24 شهریور 1388, 12:20 عصر
ما که چیزی تو پست شماره 11 نمیبینیم