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

نام تاپیک: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

  1. #1
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    با سلام

    من برنامه ای نوشتم که کاربر اسناد حسابداری را وارد گرید و ذخیره میکنه.سوال اینجاست که وقتی کاربر مثلا امروز تاریخ1390/03/09 یک سند ثبت میکنه به شماره سند 1(شماره سند توسط سیستم درج میشود و کاربر دخاتی در آن ندارد)10 روز دیگه یک سند براش میاد دوباره به تاریخ1390/03/09 و در این 10 روز 100 سند زده و شماره اسناد تا 101 پیش رفته حالا کاربر می بایست سندی که اومده واسش و به تاریخ 1390/03/09 رو به همون تاریخ بزنه و می زنه و من فرمی طراحی کردم که باید در این فرم عملیات( شماره سند برگرده به یکی بعد از آخرین سند تاریخ 1390/03/09 ).مثلا اگه آخرین سند تاریخ1390/03/09 5 است باید این سندی که بعد از 10 روز به دست کاربر رسیده و کاربر ثبتش کرده برگرده به یکی بعد از آخرین شماره سند دذ تارخ مذکور
    قابل ذکر است دوستان این توضیحاتی که بنده دادم در یک فرم جدا برای اسنادی که روزها پس از تاریخ روز به کاربر ثبت کننده داده می شود قرار است انجام بشه.
    در واقع بنده می خوام اسناد حسابداری رو مرتب کنم براساس تاریخ ثبت که شماره اسنادشونم باید به ترتیب باشه

  2. #2
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    اساتید و مدیران محترم کسی نمی تونه راهنمایی منه؟

  3. #3

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    من کد وی بی شو می ذارم
    یه راهنمایی هم می کنم

    بی زحمت تبدیلش کردی به سی شارپ بذار تو همین صفحه که استفاده بشه




    Public Sub ReindexRecordsUpdateCode(tbl As String, HasMsg As Boolean, ttl As String, Optional ByVal dateFieldName As String = "date")

    Dim db As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set rs = Nothing
    Set db = New ADODB.Connection

    db.CursorLocation = adUseClient
    db.Open strDBConnectionString
    Set rs = New ADODB.Recordset
    ' rs.Open "select code from " & tbl & " WHERE FT = " & lngCurrFinaTerm & " order by code ", db, adOpenStatic, adLockOptimistic
    rs.Open "select * from " & tbl & " WHERE FT = " & lngCurrFinaTerm & " order by " & dateFieldName & ",code ", db, adOpenStatic, adLockOptimistic
    Dim max, min, temp As Integer
    Dim tmpDt As String, flgChange As Boolean




    If rs.RecordCount > 0 Then
    With rs

    rs.MoveFirst
    min = .Fields("code")

    rs.MoveLast
    max = .Fields("code")

    If min < 0 Then
    temp = max - min + 10
    Else
    temp = max + min + 1000
    End If


    .MoveFirst
    Do Until .EOF = True

    'If .Fields("code") < 0 Then
    .Fields("code") = .Fields("code") + temp
    .Update
    .MoveNext
    'Else
    ' GoTo nex
    'End If

    Loop

    Dim i As Integer
    i = 0
    .MoveFirst
    i = 0
    Do Until .EOF
    i = i + 1
    .Fields("code") = i
    .Update
    .MoveNext
    Loop



    nex:
    End With
    If HasMsg Then farmsgbox "ok", vbOK, 4, "406"
    Else
    If HasMsg Then farmsgbox "NO", vbOK, 1, "406"
    End If


    'close data base
    If db.State <> 0 Then
    db.Close
    End If
    Set db = Nothing

    With rs
    If .State = 1 Then
    .Close
    End If
    End With


    End Sub


  4. #4
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    با تشکر پاسخ شما. این کد چیکار میکنه؟این کد convert به C#‎ نمیشه.دوستان کسی نیست کمک کنه؟کارم گیره
    آخرین ویرایش به وسیله نیما حتمی : سه شنبه 10 خرداد 1390 در 12:30 عصر

  5. #5

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    نقل قول نوشته شده توسط نیما حتمی مشاهده تاپیک
    با تشکر پاسخ شما. این کد چیکار میکنه؟این کد convert به C#‎ نمیشه.دوستان کسی نیست کمک کنه؟کارم گیره
    این کد دقیقا همون کاری رو انجام میده که شما می خوای
    خیلی ساده می تونی سی شارپشو بنویسی
    کاری نداره که

  6. #6
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    شکل زیرو نگاه کنید من میخوام 17 بشه 3 البته جای رکوردها نمی خوام عوض بشه
    sort.JPG
    سیستم میاد تاریخ رو میبینه براسا س تاریخ شماره سند رو تغییر می ده.در واقع من میخوام فقط وفقط جای شماره سندها باهم عوض بشه نه داده های دیگه و این تغییرات در بانک اعمال بشه(update بشه جدول مربوطه)
    خیلی ساده می تونی سی شارپشو بنویسی
    دوست عزیز اگه من می دونستم چطوری میشه نوشت که تایپیک نمی زدم
    آخرین ویرایش به وسیله نیما حتمی : سه شنبه 10 خرداد 1390 در 15:11 عصر

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    خرداد 1390
    محل زندگی
    تبریز
    پست
    40

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    هیچ راهی نداره مگه اینکه خودت شماره سند رو دستی تولید کنی
    یعنی autonumber نباشه

  8. #8
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    هیچ راهی نداره مگه اینکه خودت شماره سند رو دستی تولید کنی
    یعنی autonumber نباشه
    در برنامه نویسی هیچ چیز غیر ممکن نیست

  9. #9

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    من نمیدونم علت اینکار شما چیه و به چه دلیل به این کار نیاز دارید ولی در کل این روش ، روش جالبی نیست. راه اصولی تر اینه که اعداد رو طوری تولید کنید که نیازی به تغییر سایر کدها نباشه ، بر مثال کدها ، اعداد بزرگتری باشه که بخش اول اونها سال و ماه و روز و بقیه کد شماره سند مربوطه باشه
    139003070017
    ولی اگر نیاز دارید به همون صورتی که خودتون فرمودید عمل بشه میتونید بصورت این کار رو انجام بدید.
    Declare    @MAXNumReceipt int, 
    @DateDoc varchar(10)
    Set @DateDoc = '1390/03/07'

    Select @MAXNumReceipt = MAX(NumReceipt)
    From TableName
    Where DateDoc = @DateDoc

    Update TableName Set
    NumReceip = NumReceipt + 1
    Where
    NumReceipt > @MAXNumReceipt
    --OR
    --DateDoc > @DateDoc

    Insert Into TableName
    (...,DateDoc, NumReceipt)
    Values
    (...,@DateDoc, @MAXNumReceipt + 1)

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

  10. #10
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    سلام
    من نمیدونم علت اینکار شما چیه و به چه دلیل به این کار نیاز دارید
    آقای یاراحمدی من برنامه حسابداری ای نوشتم که کاربر اسناد رو میاد در سیستم ثبت میکنه و هنگام ثبت سیستم یک شماره سند براش تولید می کنه.حالا اگر 10 روز دیگه سند تاریخ امروز رو به کاربر دادن کاربر باید بیاد اون سند رو به تاریخ 10 روز قبل بزنه حالا مشکل اینه که سند 10 روز قبلی که کاربر امروز به تاریخ 10 رو قبل می زنه شماره سند که به 10 روز قبل برنمی گرده که شماره سند همینطور واسه خودش میندازه میره جلو.در حسابداری در قسمت صدور سندش ما بحثی داریم به نام مرتب سازی اسناد.ایم کاری که من می خوام انجام بدم همینه.در واقع سیستم میاد تاریخ سند رو میبینه براساس تاریخ شماره اسناد رو مرتب(آپدیت)می کنه.این کدی که شما نوشتینو چطور در خود سی شارپ اعمال کنم؟

  11. #11

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    سلام،
    اول اینکه منظورتون از اینکه میگید "کاربر باید بیاد اون سند رو به تاریخ 10 روز قبل بزنه" چیه؟
    وقتی به یک سند یک شماره اختصاص پیدا کرد ما یک سری از اعداد متوالی داریم مثلاً 1 تا 10. اگر به هر دلیلی قرار باشه یک عدد جدید یکتا در این سری قرار بگیره چاره ای نیست جز اینکه از مکان اون عدد به بعد مجدداً شماره گذاری کنیم مثلاً تو مثال شما 17 می شه 3، 3 می شه 4 و الی آخر. که این کار رو باید در یک حلقه انجام بدی داخل حلقه یک دستور UPDATE اجرا می شه که شماره سند رو می گیره و اون رو عوض می کنه. البته می تونی یه Trigger بنویسی که کارش اینه که از 1 تا N رو روی مقادیر فعلی Replace کنه.

  12. #12
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    سلام آقای عزیزی
    منظورم اینه که وقتی به کاربر اسناد مربوط به 10 روز قبل رو امروز میدن که هنوز در سیستم ثبت نشده کاربر میاد به تاریخ 10 روز قبل سندی که امروز بهش دادنو می زنه حالا شماره سند تا امروز تا 100 رفته در صورتی که سندی که امروز به کاربر دادن شماره سندش باید بشه آخرین شماره سند تا تاریخ 10 روز پیش(مثلا اگه آخرین سند تا 10 روز پیش 12 بوده باید بشه 13 این سند و الی آخر)
    اگه ممکنه با کد بفرمایید چه کار باید کنم.

  13. #13
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    دوستان کسی نیست این کمک بزرگ و در حق ما بکنه؟

  14. #14
    کاربر تازه وارد آواتار reuonis
    تاریخ عضویت
    تیر 1386
    محل زندگی
    اصفهان
    پست
    66

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    راهی که آقای Reza_Yarahmadi گفتند مشکلی نداره، من خودم از این روش استفاده می کنم.

  15. #15
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    این دستورات sql هست.چطور در سی شارپ استفاده کنم؟ممنون میشم راهنماییم کنین

  16. #16

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    که این کار رو باید در یک حلقه انجام بدی داخل حلقه یک دستور UPDATE اجرا می شه که شماره سند رو می گیره و اون رو عوض می کنه. البته می تونی یه Trigger بنویسی که کارش اینه که از 1 تا N رو روی مقادیر فعلی Replace کنه.
    نیازی به این کار نیست و به یک دستور Update ساده میشه این کار رو انجام داد (همون دستوری که توی پست قبل گذاشتم).
    این دستورات sql هست.چطور در سی شارپ استفاده کنم؟ممنون میشم راهنماییم کنین
    یا این دستورات رو بصورت یک Store Proc بنویسید و سمت برنامه اونو صدا بزنید یا بصورت زیر عمل کنید.
    SqlCommand cmd = new SqlCommand(@"
    Declare @MAXNumReceipt int

    Select @MAXNumReceipt = MAX(NumReceipt)
    From TableName
    Where DateDoc = @DateDoc

    Update TableName Set
    NumReceip = NumReceipt + 1
    Where
    NumReceipt > @MAXNumReceipt
    --OR
    --DateDoc > @DateDoc

    Insert Into TableName
    (...,DateDoc, NumReceipt)
    Values
    (...,@DateDoc, @MAXNumReceipt + 1)", con);
    cmd.Parameters.AddWithValue("@DocDate", "1390/03/07");
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();

    به جای 3 نقطه سایر فیلدها و مقدارهاشون رو قرار بدید.
    پیشنهاد میکنم یک مقدار در مورد SQL مطالعه کنید. نمیشه با دونستن فقط #C برنامه نویسی حرفه ای کرد ، بعضی از مواقع برای مواردی مثل امنیت بیشتر ، سرعت بیشتر ، کدنویسی راحتتر و ... باید کارها رو سمت دیتابیس انجام داد. (به خدا SQL هم همه چیز داره!! )
    البته من بازم سر حرف خودم هستم که روش شماره گذاری سند خیلی جالب نیست .

  17. #17
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    این دستورات واسه چیه دوست عزیز؟
    Insert Into TableName
    (...,DateDoc, NumReceipt)
    Values
    (...,@DateDoc, @MAXNumReceipt + 1)", con);
    cmd.Parameters.AddWithValue("@DocDate", "1390/03/07");
    آخرین ویرایش به وسیله نیما حتمی : دوشنبه 16 خرداد 1390 در 08:24 صبح

  18. #18
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    این ارور واسه چیه؟من فیلدامو اضافه کردم
    sortttttt.JPG

  19. #19
    کاربر دائمی
    تاریخ عضویت
    اسفند 1388
    محل زندگی
    تهران
    پست
    742

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    آقا رضا این سوال منو میشه پاسخ بدین لطفا؟

  20. #20

    نقل قول: سوال در مورد مرتب کردن شماره اسناد در بانک اطلاعاتی؟

    این دستورات واسه چیه دوست عزیز؟
    Insert Into TableName
    (...,DateDoc, NumReceipt)
    Values
    (...,@DateDoc, @MAXNumReceipt + 1)", con);




    cmd.Parameters.AddWithValue("@DocDate", "1390/03/07");

    دستور اول: من فرض کردم بعد از جابجا کردن شماره سندها میخواید اطلاعات سند جدید رو ذخیره کنید ، این کد سند جدید رو با کد بدست اومده ذخیره میکنه (به جای 3 نقطه فیلدهای مورد نظرتون رو بذارید)
    دستور دوم: متغیرها توی SQL با @ شروع میشن ، 2 راه برای تعریف متغیر وجود داره یکی اینکه توی دستورات SQL و با استفاده از دستور Declare متغیر و نوعش معلوم بشه (مثل متغیر MAXNumReceipt@) و دیگری اینکه توی دستورات SQL استفاده بشه ولی از سمت برنامه مقدارش پاس داده بشه. توی مثال بالا من متغیر DocDate@ رو توی دستورات استفاده کردم و با استفاده از خاصیت Parameters مقدار این متغیر رو پاس دادم (خیلی سعی میکنم روان توضیح بدم ولی نمیشه!)

    خطایی هم که به شما میده به این دلیله که 2 متغیر DateDoc@ و AtfDoc@ رو توی دستورات SQL استفاده کردید ولی نه توی دستورات SQL اونوها رو تعریف کردید نه از طرف برنامه مقداری به ازا هر کدوم پاس دادید (من توی کدی که گذاشتم به جای DateDoc@ اشتباها DocDate@ پاس دادم)
    با استفاده از cmd.Parameters.AddWithValue هر 2 متغیر رو مقدار دهی کنید درست میشه.
    cmd.Parameters.AddWithValue("@DateDoc", textBox1.Text); 
    cmd.Parameters.AddWithValue("@AtfDoc", textBox2.Text);

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

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