View Full Version : مشكل با Vsflex8 و Adodc و كد كردن اطلاعات
xxxxx_xxxxx
شنبه 19 بهمن 1387, 16:25 عصر
تا حالا شده يه مشكلي تو برنامه تون داشته باشيد كه قابل حل شدن نباشه در حالي كه با هزار جور تست كردن اون قسمت از برنامه تو يه پروژه ديگه اون مشكل وجود نداشته باشه؟ اين هم از هموناس.
خب. اصل قضيه اينه كه من همه اطلاعاتي كه كاربر وارد برنامه مي كنه رو به صورت كد شده تو بانك ذخيره مي كنم. اين كد كردن با تغيير و كم و زياد كردن كاراكتر ها انجام ميشه.
يه vsflex هم براي نمايش اون ها رو فرم دارم. Vsflex از طريق Adodc1 به بانك وصله.
خب طبيعتاً بايد همه خونه هاي Vsflex به صورت كد شده نمايش داده بشن. براي همين قبل از نمايش تو يه حلقه همه خونه هارو decode مي كنم. ولي وقتي اطلاعات decode ميشن به صورت ناقص اينكار انجام ميشه.
مثلاً ما اگه تو يكي از خونه هاي vsflex داشته باشيم : "برنامه نويس" تبديل ميشه به : "برنامه ن"
خب مشكل كجاست ؟
ايناهارم در نظر بگيريد:
1- فيلد طراحي شده تو بانك ظرفيت 80 كاراكتر را دارد
2- بعد از كد شدن اطلاعات طول آنها حداكثر به 80 كاراكتر مي رسد
3- توابع Encode و Decode به هيچ عنوان مشكلي ندارند
4- پس مشكل چيه ?:متفکر:؟
meys34
یک شنبه 20 بهمن 1387, 19:30 عصر
والا بدون ديدن كدهاي برنامه نميشه جواب سوال شما رو داد :گیج: اما دو چيز به ذهنم رسيد:
1- بهتره قبل از اينكه Adodc1 اطلاعات رو اتوماتيك توي Vsflex نمايش بده شما اطلاعاتتون رو ازش بگيريد و خودتون دستي وارد Vsflex بكنيد.
2- شايد اطلاعات اينجوري شده باشه
"برنامه ن"+chr(0)+"ويس"
و قسمت بعدي ("ويس") با اينكه وجود داره نمايش داده نميشه:متفکر:
xxxxx_xxxxx
یک شنبه 20 بهمن 1387, 19:49 عصر
يعني يك حلقه براي decode كردن و يك حلقه هم براي نمايش دادن اطلاعات داشته باشيم؟
ميشه اينها رو ادغام كرد.
اين مشكل زمان ثبت هم وجود داره.
دستورات براي ذخيره كردن:
txtAddress.Text = Encode(txtAddress.Text)
بعد هم با متد update ذخيره ميشه.
من فكر مي كنم مشكل، كاراكترهاست.
آخه كاراكترهايي كه به عنوان كد هستند كاراكترهاي معمولي نيستند و اينها از چند محل عبور مي كنند تا decode ميشن. تو Vsflex هستند. تو Database هستند. تو textbox هم هستند.
يعني وجود اينها در اين مكان ها لحظه اي هست. مثلاً وقتي فرم لود ميشه داده هاي كد شده تو vsflex هستند كه با يه حلقه سريع همه decode ميشن. يا براي ذخيره شدن اول ميرن تو textbox ها و بعد از textbox ها به بانك منتقل ميشن.
در كل منظورم اينه كه ممكنه يكي از اين جاها اين كاراكترهارو نفمه.(يه چيزي ازشون كم كنه يا بجاش علامت سوال بزاره)
حالا اين مسيرهايي كه طي ميشه رو كنترل مي كنم و متنظر نظر شما دوستان هم هستم.
meys34
یک شنبه 20 بهمن 1387, 21:37 عصر
من فكر مي كنم مشكل، كاراكترهاست.
آخه كاراكترهايي كه به عنوان كد هستند كاراكترهاي معمولي نيستند و اينها از چند محل عبور مي كنند تا decode ميشن. تو Vsflex هستند. تو Database هستند. تو textbox هم هستند.
يعني وجود اينها در اين مكان ها لحظه اي هست. مثلاً وقتي فرم لود ميشه داده هاي كد شده تو vsflex هستند كه با يه حلقه سريع همه decode ميشن. يا براي ذخيره شدن اول ميرن تو textbox ها و بعد از textbox ها به بانك منتقل ميشن.
در كل منظورم اينه كه ممكنه يكي از اين جاها اين كاراكترهارو نفمه.(يه چيزي ازشون كم كنه يا بجاش علامت سوال بزاره)
منظورتون رو فهميدم ولي غير ممكنه كه
كاراكترهارو نفمه
كدهاي زيرو نگاه كن
xxxxx_xxxxx
یک شنبه 20 بهمن 1387, 22:01 عصر
مثال خوبي بود ولي دقيقاً مشكل از textbox ها بود. چون...
همونطور كه تو پست قبلي گفتم اونجايي كه كاربر اطلاعات رو تو text مي نويسه و دكمه ثبت رو ميزنه. تو برنامه اينطوري نوشته بودم:
txtAddress.Text = Encode(txtAddress.Text) و بعد هم چون textbox با بانك مرتبط بود با متد update ذخيره ميشد. يعني مشكل دقيقا از همينجا بود كه textbox نقش رابط رو داشت ولي حالا انتقال اطلاعات رو به صورت مستقيم انجام دادم كه همه چي درست شد. اينطوري:
Adodc1.Recordset.Fields!Address = Encode(txtAddress.Text) ولي من هنوز نفهميدم كه چرا بايد اين دو دستور با هم فرق داشته باشند !!! ؟؟؟
به خاطر همون مشكل كاراكترهاست كه تو پست قبلي گفتم ؟!
در حالت اول يه كلمه به اين صورت كد ميشد:
جضذعوًêôہتؤخكéم و همون كلمه در حالت دوم به اين صورت:
جضذعوًêôہتؤخكéميح×رغ
xxxxx_xxxxx
یک شنبه 20 بهمن 1387, 22:08 عصر
آووو. چه اشتباهي...
از شما (meys34 (http://barnamenevis.org/forum/member.php?u=72486)) عذر ميخوام كه وقتتون رو گرفتم مشكل از يك جاي ديگه بود.
همونطور كه تو پست اول گفتم من براي افزايش طول رشته تو بانك طول فيلدها رو با طول مناسب ايجاد كرده بودم، اما غافل از اين كه براي textbox ها Maxlen تعريف كرده بودم.
متشكرم كه تو اين تاپيك شركت كرديد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.