منتديات جريت بلينز العربية Great Plains For Arab

منتديات جريت بلينز العربية Great Plains For Arab (http://www.gp4arab.com/forum/index.php)
-   منتدى أكواد فيجوال بيسك VBA (http://www.gp4arab.com/forum/forumdisplay.php?f=7)
-   -   سؤال برمجي بحت (http://www.gp4arab.com/forum/showthread.php?t=1052)

kh_waleed23 17-Mar-2012 08:53 AM

سؤال برمجي بحت
 
السلام عليكم ورحمة الله وبركاته
وعفوا على الغياب الطويل
والذي كان لظروف (عمل امبلمتيشن جديد)

على العموم السؤال لأصحاب الفيجوال :-

كود:

mYVAR="SAR 13.25"
كيف استطيع تحويل القيمة السابقة من نص
إلى قيمة from string to value
كود:

mYVAR=13.25

ولكم جزيل الشكر والتقدير

عماد زيد 17-Mar-2012 10:38 AM

السلام عليكم
أخي الكريم أنا لست مبرمج و لكن إذا كان طويل الإضافة النصية Sar معروف دائما عندها ممكن أن تحذف هذه الإضافة عن طريق تعليمة Mid

ahmedzico 17-Mar-2012 02:17 PM

السلام عليكم ورحمة الله وبركاته
في هذه الحالة تتم عملية التحويل على مرحلتين
الاولى ازالة الحروف من المتغير وذلك بالدالة
mid
والمرحلة الثانية هي تحويل النص الى قيمة واليك الشرح
المتغير الاساسي عندنا هو :
mYVAR
نعرف متغيرين جديدين واحد للقيمة الرقمية الناتجة وليكن
myVal
ومتغير آخر لعدد حروف المتغير الاساسي الخاص بنا وذلك لأننا لا نعرف هل دائما الرقم عبارة عن خانتين قبل العلامة العشرية وخانتين بعد العلامة العشرية ام سيختلف ، ولنسمي هذا المتغير بـ
myLen
كود:

mYVAR="SAR 13.25"
myLen = len(mYVAR)
mYVAR=mid ( mYVAR ,5,myLen-4)
myVal=val(mYVAR)

ودعنا نلقي بعض التوضيح على السطر الثالث في الكود
فاننا سوف نستخلص الحروف بدءا من الحرف الخامس وذلك لوجود فراغ بعد رمز العملة يجب ان نضعه في الاعتبار
وعدد الحروف التي سوف نستخلصها سيكون مساويا لعدد الحروف كلها مع استبعاد الاربع حروف الاولى وهي رمز العملة والفراغ بعدها
بالطبع اذا اختلف رمز العملة فسوف تختلف هذه الارقام
ارجو تجربة هذا الكود واخباري بالنتائج

kh_waleed23 18-Mar-2012 08:40 AM

هذا الحل مؤقت مثل اللي ....
 
شكرا الف شكر على التفاعل ولكن الحل هذا مؤقت زي اللي انا عملته
واليك الكود
كود:

MyVAR = InStr(1, "SAR 13.5" , " ", 0)
MyVAR = Len("SAR 13.5") - MyVAR
MyVAR = Right(MarkdownAmount, MyVAR)
Myval = Val(MyVAR)

هذا الكود بس اذا كنت تعرف انه يوجد فراغ أو تعرف طول النص
بس اذا ما في فراغ والطول يتغير من رقم إلى رقم
لإن القيم يتم اخذها من MARKDOWN من الجريت بليينز وتكون في الفيجوال على شكل نصي .

ahmedzico 18-Mar-2012 12:56 PM

السلام عليكم
في الكود الذي كتبته أخذت في الاعتبار تغير طول النص اي انه لا توجد مشكلة في تغير طول النص
واعتقد انه لن تكون هناك مشكلة في استبعاد رمز العملة مع الفراغ لأن هذا لن يتغير حيث انه من اعدادات العملة في النظام.
حاول ان تجرب الكود التالي

كود:

mYVAR=MarkdownAmount
myLen = len(mYVAR)
mYVAR=mid ( mYVAR ,5,myLen-4)
myVal=val(mYVAR)

مع العلم بان الكود الذي كتبته سوف يعمل بدون اي مشاكل ولكني ارى استبدال "SAR 13.5"
بالمتغير نفسه وهو MarkdownAmount
حاول ان تجرب الكود واخبرني بالمشاكل

Dreams Artist 10-Dec-2012 02:48 AM

حل نهائي بإذن الله
 
بسم الله الرحمن الرحيم

أولاً أنا مش عارف أنتو بتكتبوا كود
vb و لا VB .Net و لا VBA
على العموم بصو الكود ده و وقولوا رأيكم:

j=len(MarkdownAmount)
for i= 1 to j
T1=mid(MarkdownAmount,i,j-i)
if val(T1)>0 and happen=false then
happen=true
M_Val=val(t1)
end if
next

بإذن الله مهما كان الرقم الكود ده هيحطهولك في المتغير
M_Val

Dreams Artist 10-Dec-2012 02:50 AM


j=len(MarkdownAmount)
for i= 1 to j
T1=mid(MarkdownAmount,i,j-i)
if val(T1)>0 and happen=false then
happen=true
M_Val=val(t1)
end if
next

Dreams Artist 10-Dec-2012 02:52 AM

المنتدى مخاصمني هاهاهاهاها
 

j=len(MarkdownAmount)
for i= 1 to j
T1=mid(MarkdownAmount,i,j-i)
if val(T1)>0 and happen=false then
happen=true
M_Val=val(t1)
end if
next



j=len(MarkdownAmount)
for i= 1 to j
T1=mid(MarkdownAmount,i,j-i)
if val(T1)>0 and happen=false then
happen=true
M_Val=val(t1)
end if
next


Dreams Artist 10-Dec-2012 02:56 AM

يا رب يكون الاخير !!!
 
1 مرفق
الحل في الملف المرفق

Dreams Artist 10-Dec-2012 03:03 AM

أسف نسيت رقم واحد !!
 
1 مرفق
أعذروني أرجوكم

نسيت رقم 1 تخيلوا

الحمد لله الذي هدانا لهذا و ما كنا لنهتدي لولا أن هدانا الله

Dreams Artist


جميع الأوقات بتوقيت GMT +3. الساعة الآن 02:46 AM.

Powered by vBulletin® Version 3.8.3

الموقع والمنتدى من تطوير » شركة المنذر للاستضافة والتصميم


الموقع لا يمثل أي جهة رسمية بل هو جهد شخصي يرمي الى تجميع القدرات في برنامج جريت بلينز