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

نام تاپیک: ثبت اتوماتیک شماره مشتری (شمارنده)

  1. #1

    ثبت اتوماتیک شماره مشتری (شمارنده)

    در یه پروژه در نسخه 2005 مشخصات زیر را در نظر بگیرید

    در قسمت ثبت مشتریان شماره مشتری باید خودکار و به ترتیب ایجاد و ثبت شود با در نظر گرفتن تکراری نبودن و غیره ..

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

    من اومدم یه جدول درست کردم که دو فیلد داشت یکی اتونامبر یکی هم برای نگداری آخرین شماره مشتری

    در فرم لود برنامه چک میکنم اگر این جدول حاوی رکورد نیست Textbox عدد 1 را که اولین شماره مشتری میباشد نشان میدهد. در زیر کلید ثبت شماره مشتری هم در جدول مشتریان ثبت شده و هم همان ردیف اول را در دیتاست آپدیت میکند یعنی جدول نگهداری همیشه حاوی 1 ردیف هست

    در نسخه 2003 به راحتی این کار رو میکرم ولی الان هزار جور ایراد میگیره
    کد ها رو در زیر می نویسم شاید از سادگی بیش از حد دچار اشتباه شدم
    اگر راه بهتری هم سراغ دارین لطف کنید توضیح بدین

    Try
    IfMe.MoshtaricTableAdapter.Fill(Me.SoftCityDataSet.moshtaric) = 0 Then
    TextBox2.Text = 1
    Else
    Dim x As Int32 = 0
    x =
    Me.SoftCityDataSet.moshtaric.Rows(0).Item("mcode")
    TextBox2.Text = x + 1
    EndIf

    این روال فرم لود بود حالا در زیر دکمه ثبت :

    Dim x As Int32 = 0
    x =
    Me.SoftCityDataSet.moshtaric.Rows.Count
    If x = 0 Then
    Me.SoftCityDataSet.moshtaric.AddmoshtaricRow(TextBox 2.Text.Trim)
    Else
    ForEach dr As DataRow InMe.SoftCityDataSet.moshtaric
    dr.BeginEdit()
    dr(
    "mcode") = CInt(TextBox2.Text.Trim)
    dr.EndEdit()
    Next
    EndIf
    Me.MoshtaricTableAdapter.Update(Me.SoftCityDataSet.moshtaric)
    Dim x1 As Int32 = 0
    x1 =
    Me.SoftCityDataSet.moshtaric.Rows(0).Item("mcode")
    TextBox2.Text = x1 + 1

    ولی هزار جور خطا میده بعضی موقع هم به جای اینکه در جدول Moshtaric که کدها نگهداری میشن فقط رکورد اول رو آپدیت کنه میاد رکورد جدید اضافه میکنه در صورتی که من شرط IF گذاشتم که فقط اگر تعداد رکوردها 0 هست رورد اضافه بشه

    اگر میشه حتما یه تست کنید که برای مسئله به این سادگی اعصابم خورد شده
    خطای مورد نظر هم اینه :


    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 2.JPG‏ (64.9 کیلوبایت, 131 دیدار)

  2. #2
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    شهریار جان امکانش هست این تیکه کدت رو با فرم و بانکش بذاری تا یکم روش کار کنم ؟

  3. #3
    خب بالاخره دو راه حل با کمک دوستان پیدا شد اینجا میگذارم شاید ه درد بقیه هم بخوره

    یکی اینکه با یه دستور Select بیشترین مقدار فیلد شماره مشتری رو خوانده (بوسیله MAX) بعد یکی به آن اضافه و ثبت شود

    راه دوم هم برگرفته از MSDN
    در اکسس 2000 به بالا IDENTITY@@ همیشه حاوی بیشترین مقدار ثبت شده فیلد AutoNumber میباشد
    لذا ما در رویداد RowUpdated این مقدار رو بدست آورده و ورد استفاده قرار می دهیم


    ' Assumes that connection is a valid OleDbConnection object.' Use the DataAdapter to fill and update the DataSet.Dim adapter As OleDbDataAdapter = New OleDbDataAdapter( _ "SELECT CategoryID, CategoryName FROM Categories ORDER BY CategoryID", _ connection)adapter.InsertCommand = New OleDbCommand( _ "INSERT INTO Categories (CategoryName) Values(?)", connection)adapter.InsertCommand.CommandType = CommandType.Textadapter.InsertCommand.Parameters.A dd( _ "@CategoryName", OleDbType.Char, 15, "CategoryName")connection.Open() ' Fill the DataSet.Dim categories As DataSet = New DataSetadapter.Fill(categories, "Categories")' Add a new row.Dim newRow As DataRow = categories.Tables("Categories").NewRow()newRow("Ca tegoryName") = "New Category"categories.Tables("Categories").Rows.Add( newRow)' Include an event to fill in the Autonumber value.AddHandler adapter.RowUpdated, _ New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)' Update the DataSet.adapter.Update(categories, "Categories")connection.Close()' Event procedure for OnRowUpdatedPrivate Shared Sub OnRowUpdated( _ sender As Object, args As OleDbRowUpdatedEventArgs) ' Include a variable and a command to retrieve the identity value ' from the Access database. Dim newID As Integer = 0 Dim idCMD As OleDbCommand = New OleDbCommand( _ "SELECT @@IDENTITY", connection) If args.StatementType = StatementType.Insert ' Retrieve the identity value and store it in the CategoryID column. newID = CInt(idCMD.ExecuteScalar()) args.Row("CategoryID") = newID End IfEnd Sub
    آخرین ویرایش به وسیله sh : شنبه 24 دی 1384 در 16:45 عصر

  4. #4
    بعضی مواقع که آدم جستجو می کنه به یه چیزای حالبی می رسه
    ها!! منم برم برناممو اصلاح کنم تا شبی نیمه شب زنگ نزنند .. آقا به مشکل بر خوردیم؟؟
    http://www.barnamenevis.org/sh...ad.php?t=13947
    http://www.barnamenevis.org/sh...ad.php?t=35935
    http://www.barnamenevis.org/sh...ad.php?t=35448
    فکر کنم این بهتر باشه:
    http://www.barnamenevis.org/se...searchid=88073

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

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