PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : درج شماره ردیف اتوماتیک



javad_rajabloo
16 / February / 1970, 11:36 AM
سلام
من یه برنامه نوشتم که برای پرونده های جدید بطور اتوماتیک شماره میده

در ابتدا من از این روش استفاده کردم :
خواندن آخرین شماره پرونده موجود در بانک و افزودن یک واحد به آن

یه مشکلی که بوجود اومد این بود که لا به لای شماره پرونده ها ، شماره های تکراری وجود داشت که نمی دونم چطوری این اتفاق افتاد.چون کاربرش یک شخص دیگه هست.

من روش رو عوض کردم :
خواندن تعداد رکوردهای موجود در بانک و افزایش یک واحد به آن
دوباره که برنامه رو بررسی کردم دیدم سه تا پرونده تکراری وجود داره

در روش اول پرونده های تکراری زیادتر بود

ممنون میشم راهنمایی کنین که چه اتفاقی میفته و راه جلوگیریش چیه.

admin
16 / February / 1970, 11:36 AM
سلام.روشتون اشتباهه.
اولا : باید اون فیلد رو در دیتابیس اتون*pk**تعریف کنید تا تکراری نپذیره
دوما : باید از* روش*Sequence Number *استفاده کنید.
مثال زیر برای SQLServer2012* است و در اوراکل هم تقریبا به همین صورته*

Create a Sequence with Initial value 1 and Increment by 1
کد:



CREATE SEQUENCE [DBO].[SequenceExample] AS INT
START WITH 1
INCREMENT BY 1
GO




Using Sequence in an Insert Statement
کد:



CREATE TABLE dbo.Employee(ID INT,Name VARCHAR(100))
GO
--INSERT RECORDS to the Employee table with Sequence object
INSERT INTO dbo.Employee VALUES
(NEXT VALUE FOR DBO.SequenceExample,"BASAVARAJ BIRADAR"),
(NEXT VALUE FOR DBO.SequenceExample,"SHREE BIRADAR"),
(NEXT VALUE FOR DBO.SequenceExample,"PRATHAM BIRADAR")
GO
-- CHECK THE RECORDS INSERTED IN THE TABLE
SELECT * FROM dbo.Employee WITH(NOLOCK)
GO



منبع : SQLHints (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)

admin
16 / February / 1970, 11:36 AM
در عکس زیر هم به صورت ویزاردی درSQLServer*نسخه ی 2008*کار رو انجام دادم.
<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>

b_e_shamlu
16 / February / 1970, 11:36 AM
ضمنا توضیح دیگری هم بدهم که این نوع شماره دهی مواقعی به درد میخوره که که شما میخواهید از این کد بعنوان آی دی استفاده کنید !!!
اما اگر شما بخواهید از شماره های بعنوان ردیف استفاده کنید و نمی خواهید جای خالی داشته باشد ( یعنی اگر ردیف 3 را حذف کردید دو باره ردیف 3 را بسازید باید به موارد زیر توجه کنید
1- فقط مواقعی شماره را بسازید که از صحت دادهای خود اطمینان دارید و دستور ساخت را بدهید
2- بعداز مورد یک رکورد را قفل کنید ( در شبکه )
3- برای ساخت رکورد دستور جستجوی بسازید که شماره خالی را پیدا کند
4- حال به یک رکورد قبل از آن رفته
5- برای ساخت فقط از دستور insert استفاده کنید نه دستور دیگری
6- بعد از ساخت رکورد فوق قفل فایل را باز کنید ( در شبکه )
حال مشکلات این برنامه
1- احتیاج به برنامه نویسی خیلی زیادی دارد
2- دستور insert دستور خطر ناکی است چرا که در جدولهای بزرگ زمان زیادی را جهت ساخت آن میبرد چرا که میبایست تمامی رکوردهای بعدی ( یعنی بعداز رکورد فوق ) را یک رکورد به پایین تر انتقال دهد و این باعث خطر میشود که در این حال امکان اتفاقات زیادی را پیش می آورد ( ازجمله قطع برق .....) درهنگام ساخت این رکورد


اگر سوالی پیش آمد پیام بدهید پاسخ خواهم داد

0armin0
28 / December / 2012, 12:55 AM
از چه دیتابیسی استفاده میکنید؟

ali3d
16 / March / 2013, 02:59 PM
بنده از Access بعنوان دیتابیس استفاده میکنم و چنین مشکلی دارم!!!!
خوشحال میشم راهنماییم کنید.

meyti
16 / March / 2013, 07:00 PM
نقل قول از ali3d
بنده از Access بعنوان دیتابیس استفاده میکنم و چنین مشکلی دارم!!!!
خوشحال میشم راهنماییم کنید.








زمان طراحی جدول نوع داده را autonumber قرار دهید

<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>

ali3d
16 / March / 2013, 09:08 PM
نقل قول از meyti

نقل قول از ali3d
بنده از Access بعنوان دیتابیس استفاده میکنم و چنین مشکلی دارم!!!!
خوشحال میشم راهنماییم کنید.








زمان طراحی جدول نوع داده را autonumber قرار دهید

<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>




دوست عزیز بنده باید بگم که* به فرض من وقتی رکورد شماره 10 را در دیتابیس ذخیر کردم و بعد که همین رکورد 10 را حذف کردم و اگه مجدد بخوام رکوردی را اضافه کنم در ستون ردیف شماره 11 ثبت میشه و یا شماره دیگه!!!
در حالی که باید عدد 10 ثبت بشه؟!!
با تشکر از پاسخگویی شما

meyti
17 / March / 2013, 12:00 AM
نقل قول از ali3d
دوست عزیز بنده باید بگم که* به فرض من وقتی رکورد شماره 10 را در دیتابیس ذخیر کردم و بعد که همین رکورد 10 را حذف کردم و اگه مجدد بخوام رکوردی را اضافه کنم در ستون ردیف شماره 11 ثبت میشه و یا شماره دیگه!!!
در حالی که باید عدد 10 ثبت بشه؟!!
با تشکر از پاسخگویی شما





دقیقا همین جوری میشه که عدد بعدی (11) اضافه میشه . اگه بخواین اینجوری نشه باید برید آخرین رکورد و عدد رو یکی بهش اضافه کنید ! و نوع داده را در اکسس number عدد انتخاب کنید



کد:



var t:integer;
.
.

table1.last;
t:=table1[&quot;id&quot;]+1
table1.append;
tabl1[&quot;id&quot;]:=t;
.
.
.
table1.post;

ali3d
17 / March / 2013, 06:44 PM
دوست عزیز من طبق گفته های شما پیش میرم اما باز هم همونطور میشه!!!
*لطفا به این ویدیو نگاه کنید.
<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>
در ضمن از کدهای بالا استفاده کردم ولی ارور داد.
موفق و پیروز باشید.

meyti
17 / March / 2013, 08:40 PM
عرض کردم که باید در اکسس نوع داده را از* autonumber را تغییر بدید به number* !!!
و خودتان عدد بسازید !
برای یوزر تعریف کردن نیازی به اتونامبر ندارید ! خودتان هم یوزر و هم پسورد را بدهید .
اگه پروژه خود را آپلود میکردید کم حجم تر و راحتتر بود ! . همچنین ویرایش کردن آن .

اگه برسم یه مثال تهیه میکنم برات .

ali3d
17 / March / 2013, 09:22 PM
ابتدا تشکر میکنم از زحمتاتون و سپس باید بگم که آیا امکان نداره اتو نامبر را طوری تنظیم کرد که عدد تکراری در برنامه تولید نکنه؟

meyti
17 / March / 2013, 11:17 PM
عدد تکراری تولید نمیشه ! فقط وقتی رکورد آخر پاک بشه عدد بعدی تولید میشه نه عدد آخرین رکورد .
از این مثال استفاده کن سوالی داشتی در خدمتم

user.zip (<span style="font-family: trebuchet ms"><font size="3"><font color="Indigo"><b><font color="red">[فقط اعضاء انجمن قادر به مشاهده لینکها و عکسها می باشند <a href="/reg_iran.php" target="_blank">برای عضویت در سایت کلیک کنید</a>]</font></b></font></font></span>)

ali3d
21 / March / 2014, 04:14 PM
ببخشید شما از اینترا وب استفاده کردید؟

meyti
21 / March / 2014, 06:05 PM
خیر

b_e_shamlu
23 / March / 2014, 01:39 AM
دوست عزیز همان طور که دیگر عزیزان فرمودند
1- اتوماتیک منظور اینکه خود سیستم عدد را انتخاب میکنه و احتمال تکراری بودن آن نیست
2- هنگامی که عدد را تولید میکنه به هیچ وجهی تکرار نیست
3- اگر شما یک ردیف ( رکورد ) را پاک کنید سیستم به پاک کردن شما هیچ توجهی نمی کنه و خودش طبق آخری رکوردی را که ایجاد کرده و شمار دهید نموده شماره بعدی را میدهد
4- به شما اجازه اصلاح عدد را هم نمی دهید تا عدد تکراری وارد کنید

به امید موفقیت