PDA

View Full Version : شماره زدن بطور اتوماتیک



maryamb
سه شنبه 04 تیر 1387, 15:00 عصر
با سلام و خسته نباشید به دوستان.
چه راه هایی رو پیشنهاد می کنید برای شماره زدن تو برنامه بطور اتوماتیک.
مثلا همین شماره فاکتور و این چیزا.
طوری که هم تکراری نباشه و هر بار یکی زیاد شه.
البته روشی به جز اتونامبر.
چون چند روش امتحان کردم ولی هر کدوم یه نقصی داشت و اصولی نبود
بگید بهترین روش کدومه
و اینکه می گم اتونامبر نباشه چون من تکست هام به پایگاه داده وصله وقتی از اتونامبر استفاده می کنم ، موقع دکمه ی "اضافه کردن " شماره نشون داده نمیشه و بعد از سیو کردن می بینم که شماره زده.
یا مثلا وقتی فرم رو باز می کنم می خوام یه شماره جدید بزنه و اگه داده وارد نشد و فرم بسته شد ، دفعه ی بعد همون شماره رو بزنه و یکی اضافه نکنه ولی فکر کنم با اتونامبر نمیشه

فاطمه وطن دوست
سه شنبه 04 تیر 1387, 15:30 عصر
سلام

خوب باید از ترکیب چند تا فیلد استفاده کنی.

a1=الف
a2=1
مثلا بگین :
code=a1&a2

------------------------------------------------------
حتی میتونین از دستور اس کیو ال زیر استفاده کنید .



strsql="select max(code) as maxcode from tablle1
mycode=rec.recordset.filds("maxcode").value+1


من با این دو خط دستور اومدم بیشترین مقدار فیلدمو پیدا کردم.



نمونه رو هم ببینین.:چشمک:

maryamb
سه شنبه 04 تیر 1387, 15:39 عصر
خیلی ممنون دوست عزیز فقط اینکه تو اون نمونه از data استفاده شده ولی من از adodc استفاده می کنم . و ایرادش هم اینه که اگه مثلا آخرین فاکتور اشتباه وارد بشه و پاک بشه ، شماره الکی یدونه اضافه می شه و از ترتیب می افته .
دستو اس کیو الی که گفتی رو امتحان می کنم .ممنون

vahidvb
سه شنبه 04 تیر 1387, 16:21 عصر
من یه همچین موردی داشتم این کارو کردم درست هم بود

TxtFactNum.Text = Data1.Recordset.RecordCount + 1

ƒxmahdi
سه شنبه 04 تیر 1387, 22:07 عصر
با سلام و خسته نباشید به دوستان.
چه راه هایی رو پیشنهاد می کنید برای شماره زدن تو برنامه بطور اتوماتیک.
مثلا همین شماره فاکتور و این چیزا.
طوری که هم تکراری نباشه و هر بار یکی زیاد شه.
البته روشی به جز اتونامبر.
چون چند روش امتحان کردم ولی هر کدوم یه نقصی داشت و اصولی نبود
بگید بهترین روش کدومه
و اینکه می گم اتونامبر نباشه چون من تکست هام به پایگاه داده وصله وقتی از اتونامبر استفاده می کنم ، موقع دکمه ی "اضافه کردن " شماره نشون داده نمیشه و بعد از سیو کردن می بینم که شماره زده.
یا مثلا وقتی فرم رو باز می کنم می خوام یه شماره جدید بزنه و اگه داده وارد نشد و فرم بسته شد ، دفعه ی بعد همون شماره رو بزنه و یکی اضافه نکنه ولی فکر کنم با اتونامبر نمیشه
روش های دوستان خوبه ولی...
من خودم از یه راه استفاده می کنم که همیشه خوب بوده ولی در موارد حذف فیلد تا بحال حلش نکردم ولی اونم هم با یخورده برنامه نویسی را می افته و اما روش من !
در بانک یه فیلد از نوع text اضافه کنید بعد در وی بی هر موقع عملیات اضافه فیلد انجام دادین یه مقدار داخل آن بگذارید
و همیشه قبل از اینکه Add New را فراخوانی می کنید یه سر برید آخر دیتابیس بعد اگه فیلد های مهم خالی نبودند اجازه انجام آن را بدهید .
اگه تونستم فردا براتون یه نمونه می گذارم موفق باشید

alicomputer
چهارشنبه 05 تیر 1387, 07:07 صبح
من این کار را نیز با کدی که وحید وی بی نوشته کار کردم درسته

TxtFactNum.Text = Data1.Recordset.RecordCount + 1

f.nabavi
چهارشنبه 05 تیر 1387, 08:17 صبح
آقای vahidvb این طوری اگر یه رکورد del بشه، یکتایی کدها از بین میره.

vahidvb
چهارشنبه 05 تیر 1387, 12:49 عصر
از فایل متنی استفاده کن بهترین راه همینه

maryamb
چهارشنبه 05 تیر 1387, 17:04 عصر
از فایل متنی استفاده کن بهترین راه همینه
من خودم از فایل متنی استفاده می کردم و همیشه آخرین شماره رو تو فایل نگه می داشتم ولی یه جا گیر افتادم و اونم اینکه برنامم قسمتی برای بازیابی داده ها داره . من وقتی برنامه رو نصب می کنم شکاره هم از یک زده می شه و از رو فایل می خونه ولی وقتی بخوام یه پایگاه داده که از قبل وجود داشته و به فرض توش شماره تا 100 رفته باشه رو بازیابی کنم برنامه با اشکال مواجه می شه چون شماره رو باید از 101 بزنه ولی از 1 می زنه

maryamb
چهارشنبه 05 تیر 1387, 17:07 عصر
TxtFactNum.Text = Data1.Recordset.RecordCount + 1
در این روش هم کافیه چند تا رکورد پاک بشه
ضمنا من یک روش هم استفاده می کردم به این صورت که همیشه آخرین رقم وارد شده رو پیدا کنه و بعد یکی بهش اضافه کنه .
برنامم یک سالی با این روش کار می کرد اما وقتی رقم به 1000 رسید کلا خورد بهم.
چون تو پایگاه داده مثلا 1000 رو از 2 کوچکتر تشخیص می داد !! و همش قاطی پاطی شد !
نمی دوونم اگه اون فیلد رو نامبر تعریف می کردم شاید مشکل حل می شد ولی دیگه جرئت نکردم و بی خیال اون روش شدم.

vahidvb
چهارشنبه 05 تیر 1387, 18:48 عصر
من خودم از فایل متنی استفاده می کردم و همیشه آخرین شماره رو تو فایل نگه می داشتم ولی یه جا گیر افتادم و اونم اینکه برنامم قسمتی برای بازیابی داده ها داره . من وقتی برنامه رو نصب می کنم شکاره هم از یک زده می شه و از رو فایل می خونه ولی وقتی بخوام یه پایگاه داده که از قبل وجود داشته و به فرض توش شماره تا 100 رفته باشه رو بازیابی کنم برنامه با اشکال مواجه می شه چون شماره رو باید از 101 بزنه ولی از 1 می زنه

خوب این که را داره مثلا میتونی روی بک آپی که میگیری شماره آخرین فاکت.ر رو بزاری و و وقتی بازیابی میکنی اون رو با شماره ای که داری جمع کنی

vbhamed
پنج شنبه 06 تیر 1387, 01:27 صبح
سلام
از تابع Max تو Sql استفاده كن و آخرين شماره رو بدست بيار و يكي بهش اضافه كن


Data1.RecordSorce = "Select Max(Number) + 1 As LastNumber From Table1"
Data1.Refresh
LastNum = Data1.RecordSet!LastNumber