الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسار عن نوع المتغير

بدأه TOPSOFT في 27 أبريل 2008 · 7 رد · 804 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوة الأفاضل

السلام عليكم ورحمة الله وبركاته

هذا الإجراء يقوم يقوم بتوليد أرقام جديده يعني عداد كما هو واضح وأنا أستخدمه في شاشة فواتير لإضافة رقم جديد لكل فاتورة وتخزينها وهكذا..........

:wacko:

Private Sub Fatora()

Dim bill2 As Integer

Dim Rs2 As New ADODB.Recordset

Dim SQL2 As String

SQL2 = "SELECT * FROM INV_NO"

'MsgBox SQL1

Set Rs2 = db.Execute(SQL2)

If Rs2.EOF = False Then

Rs2.MoveFirst

Else

bill2 = 1

txtDocNo.Text = bill2

GoTo Fat

End If

bill2 = Rs2.Fields(0)

Do Until Rs2.EOF

If Rs2.EOF = True Then GoTo Fat

If bill2 > Rs2.Fields(0) Then

Rs2.MoveNext

Else

bill2 = (Rs2.Fields(0) + 1)

Rs2.MoveNext

End If

Loop

Rs2.Close

Set Rs2 = Nothing

Fat:

txtDocNo.Text = bill2

End Sub

ولكن أنا ليا ملاحظه وهي أن هذا المتغير (bill2 ) والذي من نوع integer توقف وأعطى خطأ عند وصوله إلى رقم (32767)

والسؤال هو أنني لا استطيع أن أعلن عن هذا المتغير كنوع integer لو كان عدد الفواتير أكبر من ذلك

والسؤال الثاني

ما هو نوع المتغير الأفضل في استخدامه لمثل هذا الأمر أو عندما يكون عدد الفواتير عندك كبير

" الحمـــــد لله الــــذي تتـــــــم بـــــــه الصالحـــــات "

#2

لماذا لا تستخدم Long بدل Integer ...

سبحان الله وبحمده ... سبحان الله العظيم

#3

شكرا لك أخي العزيز على الرد السريع

وأنا بالفعل أستخدمت النوع long بعد الذي حصل

شكرا لك أخي الكريم

ولكن هذا الأمر يجب توضيحه من الأخوه المبرمجين اللذين لديهم خبرة في البرامج

أقصد المتغيرات ومدى مشاكلها لأن كما رأيت أن المشكلة لم تظهر إلا بعد وقت طويل من عمل البرنامج ولا أقول أن هذا خطا مني في استخدام هذا النوع (integer)

لأني بالفعل أخذت هذا الإجراء من برنامج لأحد الأخوة وهو ذو خبرة جيده في البرمجه في هذا المنتدى وايضا كان برنامج للفواتير ولم أفكر في هذا الأمر

عموما شكرا

ولك تحياتي

" الحمـــــد لله الــــذي تتـــــــم بـــــــه الصالحـــــات "

#4

وهذا شرح لسعة المتغيرات الرقمية ( طبعًا لم يذكر هنا المتغيرات من نوع بايت Byte حيث أن سعتها صغيرة جدًا من 0 إلى 255 فقط ):

LEFT TO RIGHT

Integer variables are stored as 16-bit (2-byte) numbers ranging in value from -32,768 to 32,767.

Long (long integer) variables are stored as signed 32-bit (4-byte) numbers ranging in value from -2,147,483,648 to 2,147,483,647.

Single (single-precision floating-point) variables are stored as IEEE 32-bit (4-byte) floating-point numbers, ranging in value from -3.402823E38 to -1.401298E-45 for negative values and from 1.401298E-45 to 3.402823E38 for positive values.

Double (double-precision floating-point) variables are stored as IEEE 64-bit (8-byte) floating-point numbers ranging in value from -1.79769313486231E308 to -4.94065645841247E-324 for negative values and from 4.94065645841247E-324 to 1.79769313486232E308 for positive values.

إذا كان برنامج يحتاج إلى استخدام أرقام فلكية تتعدى سعة Long في المستقبل فيمكنك استخدام Single و Double ..

سبحان الله وبحمده ... سبحان الله العظيم

#5

أنظر الي الصورة المرفقة

شكراً

post-126779-1209356635_thumb.jpg

لا تخلط ما بين شخصيتي وأسلوبي .. فشخصيتي هي

ما أنا عليه وتحت تصرفي .. وأسلـوبي يعتمد عليـك

أنت وتصرفاتك

ولحظاتي صمت... وصمـت لحظاتي كلام ... كلامه

اشد آلام ... فصمتي أنا عنوان

عصر التكنولوجيا المعلوماتية(مدونتي الخاصة)

My FaceBook

#6

شكرا جزيلا لكم

وانا بالفعل أخترت النوع long ولكن أعتقد أن الموضوع اثار نقطه مهمة جدا وهي التركيز جيدا عند اختيار أنواع المتغيرات .

لأن أغلبها لا تظهر مشاكله في اللحظه .

وشكرا على التوضيح والشرح وبارك الله في جميع الأخوة القائمين على هذا المنتدى الرائع وأعضائه المحترمين

" الحمـــــد لله الــــذي تتـــــــم بـــــــه الصالحـــــات "

#7

السلام عليكم ورحمة الله وبركاته

اسمحو لي بأن اكتب هذا الكود البسيط وأتمنى إن يكون بسيط في فكرته

On Error Resume Next

Rs_count.Close

SQL_count = "SELECT MAX(id) AS [max_id] FROM [a_country_name] "

Rs_count.Open SQL_count, DB, adOpenStatic, adLockReadOnly

'************

If Rs_count.Fields("max_id") <> "" Then

Text1.Text = Rs_count.Fields("max_id") + 1

Else

Text1.Text = 1

End If

إلى هنا نكون قد حصلنا على رقم الفاتورة المسلسل بغض النظر عن فرض نوع متغير

أرجو أن يكون مفيد

هي الدنيا تقول بملئ فيها ***** حذار حذار من بطشي وفتكي

فلا يغرنكم مني ابتســــام ***** فقولي مضحك والفعـل مبكي

#8
Ahly Is The Best كتب:

السلام عليكم ورحمة الله وبركاتة

ازيكم احبائى فى الله

انا اريد كود خاص بعمل عداد

بيتحط فى زى " اضافة " بحيث ان المستخدم يضغط على اضافة عميل جديد .. كود العميل اوتوماتيكلى يترقم

انا عاوز الكود لأنة هيحل لى مشاكل كتيرة اوى خصوصا ان حقل كود العميل دا primary key

افيدونا افادكم الله

شكرا :wub:

اقتباس
If Ctm.RecordCount = 0 Then

OsenXPTextBox1.Text = 1

Else

Ctm.MoveLast

OsenXPTextBox1.Text = Ctm.Fields(0) + 1

End If

انا استخدمت الكود دا ونفع معى

فى حالة ان المستخدم يقوم بالضغط على زر

اضافة

يتم تنفيذ الكود تلقائيا

وحفظة

مفيش مشكلة لحد دلوقتى

وعدد السجلات فى الجدول 20

المفروض انى اعمل جديد يجيبلى 21

لكن

المشكلة ظهرت

لما حذفت سجل من السجلات

وليكن مثلا السجل رقم 10

كدا بقيت السجلات

19

ولو ضغطت اضافة

حيعطينى السجل رقم 20 !!

بالرغم من وجود السجل رقم 20 فى السجلات

وبالطبع حيعطينى error

وانا بعمل حفظ

لانة حقل كود العميل

primary key

بالله عليكم لو فية حد يعرف حل للمشكلة دى يساعدنى

شكرا

هو مفيش حد هنا ولا اية ؟

مواضيع مشابهة