PDA

View Full Version : AutoNumber



ali643
یک شنبه 27 اردیبهشت 1383, 13:20 عصر
سلام

در یکی از Table های یک دیتابیس Access یک فیلد AutoNumber دارم که کدهای موجود توسط این فیلد وارد می شوند حالا کاربر برنامه حدود 230 تا رکورد اضافه کرده و در بین این 230 رکورد 3 تا از رکورد ها پاک شده می خواستم بدونم که چه طوری می تونم این رکورد ها را دوباره با همان کدهای قبلی وارد کنم
(*رکورد های پاک شده 185و186و187 *)هست
در ضمن حال دوباره وارد کردن اطلاعات رو هم نداره :oops:

h_arman
شنبه 25 مهر 1383, 04:49 صبح
این کار با وجود فیلد autonumber غیر ممکنه. باید فیلد را به number تبدیل کنی و مقادیر این فیلد را به صورت دستی تنظیم کنی. :sunglass:

Nightbat
شنبه 25 مهر 1383, 10:17 صبح
تازه اگر این کار رو هم بکنی دیگه نمی تونی دوباره به Autonumber تبدیلش کنی !!! :1010:

MiRHaDi
جمعه 08 آبان 1383, 00:33 صبح
سلام
یک برنامه بنویس که کپی کنه اطلاعات رو از اون به این
بای

Payam Moradi
جمعه 08 آبان 1383, 09:34 صبح
اصلا نمیشه کاری کرد. 8)
نظرات بی فایده است 8)

vcldeveloper
شنبه 09 آبان 1383, 03:42 صبح
1- اول یه بار Database Compact and Repair رو اجرا کن تا شماره رکوردهای پاک شده به چندتا از رکوردهای موجود نسبت داده بشند. (یعنی بعد از فشرده کردن اگه سه رکورد حذف کرده باشی تمامی رکوردهای بعد از اونها سه شماره میان عقب و سه تا رکورد دیگه شماره های 185و186و187 رو اشغال می کنند).

2- سه رکورد جدید درست کن و اطلاعات خودت وارد کن.

3- محتویات هر کدوم از فیلدهای رکوردهای 185 و 186 و 187 فعلی رو بخون و در فیلدهای رکوردهای جدید بنویس.

4- به جای هر رکوردی که خالی شده، اطلاعات قبلی رو که می خواستی برگردونی سرجاش وارد کن

hrh
یک شنبه 22 آذر 1383, 04:27 صبح
آقای علی کشاورز عزیز


اول یه بار Database Compact and Repair رو اجرا کن تا شماره رکوردهای پاک شده به چندتا از رکوردهای موجود نسبت داده بشند. (یعنی بعد از فشرده کردن اگه سه رکورد حذف کرده باشی تمامی رکوردهای بعد از اونها سه شماره میان عقب و سه تا رکورد دیگه شماره های 185و186و187 رو اشغال می کنند).

من با دیدن حرف شما تخیلی تعجب کردم و همون لحظه تست کردم با Database Compact and Repair فیلدهای Auto Number تغییری (Reset) نمی کند.

حرف h_arman درست تره. باید فیلد به Number تغییر داده بشه و بطور دستی شماره‌های دلخواه وارد بشه.

payam59
دوشنبه 23 آذر 1383, 14:35 عصر
برای ساخت Autonumber دو راه وجود داره :
1- استفاده از یک جدول واسطه که با Appendquery ساخته میشه (که چندان دلچسب نیست).
2-استفاده از کدنویسی.
در مورد راه حل دوم می شه از کد زیر استفاده کرد:


********* Code Start ***********
' This code was originally written by Dev Ashish
' It is not to be altered or distributed,
' except as part of an application.
' You are free to use it in any application,
' provided the copyright notice is left unchanged.
'
' Code Courtesy of
' Dev Ashish
'
Function fCreateAutoNumberField( _
ByVal strTableName As String, _
ByVal strFieldName As String) _
As Boolean
'
' Creates an Autonumber field with name=strFieldName
' in table strTableName.
' Accepts
' strTableName: Name of table in which to create the field
' strFieldName: Name of the new field
' Returns True on success, false otherwise
'

On Error GoTo ErrHandler
Dim db As DAO.Database
Dim fld As DAO.Field
Dim tdf As DAO.TableDef

Set db = Application.CurrentDb
Set tdf = db.TableDefs(strTableName)
' First create a field with datatype = Long Integer
Set fld = tdf.CreateField(strFieldName, dbLong)
With fld
' Appending dbAutoIncrField to Attributes
' tells Jet that it's an Autonumber field
.Attributes = .Attributes Or dbAutoIncrField
End With
With tdf.Fields
.Append fld
.Refresh
End With

fCreateAutoNumberField = True

ExitHere:
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing
Exit Function
ErrHandler:
fCreateAutoNumberField = False
With Err
MsgBox "Error " & .Number & vbCrLf & .Description, _
vbOKOnly Or vbCritical, "CreateAutonumberField"
End With
Resume ExitHere
End Function
' ********* Code End ***********

منبع :سایت Mvps.org