Sql Server et les 0 en début de chiffres

Résolu
lys44 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis actuellement en train de prog une appli en VB.net permettant le calcul de rentabilité d'un dossier.

Afin que les salariés ne soient pas perturbés lors de l'utilisation de l'appli je me suis basée sur le "code" leur permettant d'identifier un dossier.

Les dossiers sont identifiés comme suit : cA1004027 ou dX0810266

c ou d correspond au type du dossier (concours, dossier)

La lettre majuscule correspond à la filiale ayant le dossier/concours.

08 ou 10 correspond à l'année.

04 ou 02 correspond au mois.

Et 027 ou 266 correspond au numéro de dossier dans l'année.

Mon hic, c'est que même si je rentre en dur les chiffres, SQL server ne prend pas en compte le 0.

Hors il m'est demandé de garder le 0 car cela permet d'identifier de manière concise l'année, le mois ou le numéro du dossier dans l'année.


De plus le 0 me permettra d'avoir une chaîne de caractères (car je la concatène à l'écran afin que cela ait le rendu attendu par l'utilisateur) avec un nombre de caractères fixe, et étant donné que je dois découper la chaine de caractères à un moment, rendra le découpage beaucoup + simple!!

S'il vous faut d'autres infos, no problem!!

Merci d'avance!

2 réponses

varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
Bonjour,

essaye de declarer l'année, le mois et ne numéro du dossier comme si c'était des chaines de caracteres. Je ne pense pas que tu fera des opérations dessus. Ainsi les 0 en debut seront gardé
1
lys44 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   5
 
Pour l'année et le mois effectivement je n'ai pas de calculs dessus.

Cependant pour le numéro du dossier dans l'année j'ai un calcul dessus.
(Voir ci-dessous)

  'Verification qu il existe deja des dossiers pour l annee concernee.
        Dim myCommand As SqlCommand
        Dim ra As Integer

        connexionSQL.Open()

        myCommand = New SqlCommand("SELECT COUNT(num) FROM DOSSIER WHERE annee = " & CB_annee_dos.SelectedItem, connexionSQL)

        ra = myCommand.ExecuteScalar() '--------- permet de compter le nombre de resultats par raport a  l exe de la requete sql

        If ra = 0 Then 'S il n existe pas de dossier pour cette annee la, il faut faire une RAZ
            num_seq = 001
        Else 'Sinon on prend le dernier num enregistre pour cette annee la et on l'incremente de 1
            'Recherche du dernier numero sequentiel
            da = New SqlDataAdapter("SELECT max(num_seq) from DOSSIER WHERE annee =" & CB_annee_dos.SelectedItem, connexionSQL)
            ds = New DataSet
            da.Fill(ds, "mytable")

            dt = ds.Tables("mytable")

            For nb As Integer = 0 To dt.Rows.Count - 1
                dr = dt.Rows(nb)
                num_seq = dr(0) + 1

            Next nb
        End If


Donc pour le num_seq je n'ai pas vraiment le choix...

Afin qu'à l'écran du user cela apparaisse comme il le souhaite j'utilise cette requête :

SELECT identifiant + lettre + CAST(annee varchar(2)) + CAST(mois varchar(2)) + CAST(num_seq varchar(3)) from DOSSIER

Il y a-t-il moyen de s'en servir pour résoudre mon pb?
0
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
Toujours en ma basant sur mon idée, tu peut bouriner un peu:

Tu enregistre bien ton numéro de dossier comme une chaine de caractere, et pour les calcul tu la cast en integrer.
Je ne connais pas le langage VB, mais dans tout les autre langage que je connais cela existe, donc y a pas de raison^^

aisi le 0 du debut ne disparaitra que pour les calcul que tu effectus dessus, et tu le garde à l'affichage grace a ta chaine de caractere ;)
0
lys44 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   5
 
Oki oki.

Je change ma BDD et mon jeu d'essai du coup...
Et puis, mon code à modifier,
Et je te dis si c'est bon ou pas

Merci !!
0
lys44 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   5
 
It's good :)

Merci beaucoup ;)
0
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
you're welcome.

Bonne continuation :D
0