2010-05-20 4 views
2

primaire dans vb.net en entrant je veux une nouvelle entrée pour attribuer un enregistrement un identifiant unique comme dans le cas de numérique que je fais de cette façongénération identifiant automatique qui est une clé

Dim ItemID As Integer 
KAYAReqConn.Open() 
SQLCmd = New SqlCommand("SELECT ISNULL(MAX(ItemID),0) AS ItemID from MstItem", ReqConn) 
Dim dr As SqlDataReader 

dr = SQLCmd.ExecuteReader 
If dr.HasRows Then 
    dr.Read() 
    ItemID = dr("ItemID") + 1 
End If 
dr.Close() 

dans ce cas m en utilisant itemid comme ID unique et le format est 1,2,3 ... et m trouver le maximum et assigner à un nouvel enregistrement mais comment assigner si l'identifiant précédent est du a00001, a00002, a00003, a00004 ...bientôt. Comment puis-je produire un ID unique dans ce cas

+0

Vous ne pouvez pas modifier vos champs de base de données de varchar à int? – Himadri

Répondre

0

Vous feriez mieux d'utiliser un champ d'identification automatique d'incrémentation automatique dans la base de données pour ces deux cas. Pour le 'a0001', mieux vaut le stocker sous la forme d'un entier, et si le 'a0000' est affiché, ajoutez-le dans votre code. Ou possiblement avoir un champ de préfixe pour stocker aussi la partie 'a' - cela dépend de vos besoins.

+0

comment puis-je écrire une requête depuis que j'ai déjà ces formats dans ma base de données et que vous voulez trouver la valeur maximale et attribuer une nouvelle valeur – abhi

+0

j'ai l'ID comme varchar – abhi

+0

@abhi - pouvez-vous le changer? – Paddy

1

Vous pouvez chercher tous les ids, l'accès un par un, briser l'identifiant et prendre seulement une partie entière, au maximum de les trouver, id et générer ensuite concate avec prefix..store .. il

Cela pourrait être un processus qui prend du temps, mais je ne trouve pas d'autre moyen.

Questions connexes