نمایش نتایج 1 تا 10 از 10

نام تاپیک: درج شماره بصورت اتوماتیک

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    تهران
    پست
    310

    Tick درج شماره بصورت اتوماتیک

    دوستان عزیز سلام
    من یک جدول در sql ساخته ام که یکی از فیلدهای آن شماره ترتیب بر اساس سال جاری میباشد مثلاً در سال 86 ترتیب شماره بصورت 860001 و 860002 و ... میباشد و در سال های بعدی بجاری 86 آن سال مورد نظر قرار می گیرد . حال در دلفی فرمی ساخته ام که با جدول فوق در ارتباط بوده و یک کلید در داخل فرم قرار داده ام که با زدن این کلید می خواهم بطور اتوماتیک برای هر رکورد شماره مورد نظر ایجاد گردد . البته بنده کد مورد نظر را نوشته ام فقط یک مشکل دارد و آن اینکه اولین شماره در اول هر سال مورد نظر را نمی تواند ایجاد کند و برنامه خطا می دهد . لطفا اگر متوجه شده اید راهنمایی کنید
    با تشکر

    var
    a:String;
    begin
    a:=Copy(MainForm.EDYear.Text,3,2)+'0001';
    TFactorMain.Insert;
    EDFactCode.SetFocus;
    with ADOQuery1 do
    begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT MAX(FactCode) as FMax FROM FactorMain Where DYear='+
    QuotedStr(MainForm.EDYear.Text) + '');
    Open;
    FCode.DataField:='FMax';
    if AdoQuery1.RecordCount>0 then
    EDFactCode.Text:=inttostr(strtoint(FCode.Text)+1)
    else if AdoQuery1.RecordCount=0 then
    EDFactCode.Text:=a;
    EDDYear.Text:=MainForm.EDYear.Text;
    end;
    //FCode:=strtoint(FcCod.Text)+1;
    //EDFactCode.Text:=inttostr(FCode);
    end;

  2. #2
    این خط رو عوض کن

    EDFactCode.Text:=inttostr(strtoint(FCode.Text)+1)

    به :

    EDFactCode.Text:=inttostr(Fields[0].AsInteger + 1)


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

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    تهران
    پست
    310
    آقای ghabil با تشکر از لطف شما ولی مشکل من زمانی رخ می دهد که در جدول FactorMain هیچ رکوردی وجود ندارد یا به عبارت دیگر در سال جدید اولین رکورد با اولین کد را به خود اختصاص دهد ولی پیغام خطا می دهد اما وقتی اولین کد را خودم دستس وارد می کنم کدهای بهدی را اتوماتیک ایجاد می کند . مشکل زمای پیش می آید که شرط If AdoQuery1.RecordCount=0 then
    برقرار می شود
    با تشکر

  4. #4
    خطایی که میگری چی هست ؟

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    تهران
    پست
    310
    با تشکر از لطف شما آقای کوشا
    خطای زیر را میدهد
    '' is not a valid integer value.

  6. #6
    دقیقا روی کدوم خط این خطا رو میگیری. ببین هرجا از FCode.Text استفاده کردی اگر بجاش بکنی Fields[0].AsInteger درست میشه. دلیلش هم اینه که وقتی Text یک فیلد خالی رو میگیری بهت '' بر میگردونه که عدد نیست اما اگر AsInteger بگیریش بهت صفر برمیگردونه که خب درسته .

  7. #7
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    تهران
    پست
    310
    آقای کوشا باز هم روی خط زیر همان خطا را می دهد
    EDFactCode.Text:=inttostr(Fields[0].AsInteger + 1)

  8. #8
    تضمینی

    if Fields[0].IsNull then
    EdfactCode.Text:= '1'
    else
    EDFactCode.Text:=inttostr(Fields[0].AsInteger + 1)

  9. #9
    کاربر دائمی آواتار Valadi
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    فعلا در خدمت شما
    پست
    1,342
    این هم یک کد:

    Table1.Fields[0].asinteger:=Table1.RecordCount+1

  10. #10
    نقل قول نوشته شده توسط Valadi مشاهده تاپیک
    این هم یک کد:

    Table1.Fields[0].asinteger:=Table1.RecordCount+1
    این کد همیشه درست جواب نمیده ، مثلا فرض کن چندتا رکورد پاک شده باشند اونوقت مثلا بیشترین شماره 100 هست در حالی که مثلا تعداد رکوردها 90 و شماره جدید شما 91 میشه که تکراریه.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •