Avatar billede midgaardsorm Nybegynder
17. december 2008 - 15:12 Der er 18 kommentarer og
1 løsning

int med format

Hej

Jeg tænkte på at bruge en int som batch-nr.

Men den kan jo ikke formateres som 09-00001 eller kan den ?

Det er en asp-side der lægger de andre data i tabellen.

Hvad gør en klog i denne situation.
Avatar billede Syska Mester
17. december 2008 - 15:23 #1
Kommer vel lidt an på hvad dit system er i det ...

Hvad er det du vil ? Du kan jo altid cast din int til en varchar ... og så pad den med "0" ... og så smide en "-" ind ...

Men jeg er ikke med på hvad du vil ...
Avatar billede arne_v Ekspert
17. december 2008 - 15:26 #2
Du kan gemme 900001 i en int i databasen og lade din applikation staa for formateringen.

Eller du kan gemme som en VARCHAR i databasen.
Avatar billede midgaardsorm Nybegynder
17. december 2008 - 15:51 #3
Det jeg vil er :

Jeg taster en masse oplysninger i forbindelse med kvalitetskontrol og skal fra nytår give hver ordre et batch nr.

Jeg er doven og gider ikke forsøge at huske det nummer derfor vil jeg gerne have det lavet automatisk. Formatet skal så være 09 for året og 5 cifre for løbende nummer.

Jeg tænkte at det var nemmest at lave SQL-serveren lave det nummer istedet for at skulle læse i tabellen lægge 1 til og gemme hele posten.

Hjalp det på hjælpen :-)
Avatar billede aaberg Nybegynder
18. december 2008 - 08:07 #4
Hvad med at have 2 kolonner. En identity kolonne som automatisk inkrementerer med 1 når der indsættes nye rows, og en kolonne som indeholder årstallet. Så kan du altid sammensætte disse kolonner i en query, hvis du skal bruge et formateret batch-nr.
Avatar billede hrc Mester
18. december 2008 - 09:41 #5
Det er nok smart at have en identity som primærnøgle. Jeg har netop brugt Åbergs løsning hvor jeg så laver query til et view der formaterer det sådan som jeg gerne vil.
Avatar billede arne_v Ekspert
19. december 2008 - 03:03 #6
Min antagelse er at løbenummeret skal starte forfra for hvert år.

Men du kan lave feltet til identity og så køre et job ved årsskiftet som
ændrer seeden.
Avatar billede midgaardsorm Nybegynder
19. december 2008 - 10:34 #7
Jeg har en identity kolonne men det skulle gerne begynde med 0 den 1. jan kl. 00:01 uden jeg skal sidde og rette eller taste.
Avatar billede aaberg Nybegynder
19. december 2008 - 10:47 #8
Du kan bruge SQL Server agenten til automatisk at nulstille identitykolonnen ved nytår.
Avatar billede aaberg Nybegynder
19. december 2008 - 10:52 #9
Jeg fandt en ok artikel om emnet. Du er tydeligvis ikke den eneste der har stået i denne situation.
http://www.sqlteam.com/article/custom-auto-generated-sequences-with-sql-server
Avatar billede midgaardsorm Nybegynder
22. december 2008 - 14:50 #10
aaberg : Det er jo lige den slags jeg skulle bruge .... smid et svar og du får point
Avatar billede midgaardsorm Nybegynder
29. december 2008 - 11:27 #11
Dette giver mig det nummer jeg har brug for :
'0' + CONVERT(varchar(10), DATEPART(year, Dato_for_kontrol) - 2000) + '-' + CONVERT(varchar(10), Id) AS Batchnr

Jeg bruger en dato og et Id der automatisk oprettes i tabellen eks.: 09-2356
Avatar billede arne_v Ekspert
29. december 2008 - 15:26 #12
Er du opmærksom på at:
* sortering efter dette nummer og sortering efter år,batchnr giver forskellig resultat fordi der er variabel længde på batchnr delen
* at formatet ændrer sig om 1 år og 3 dage
?
Avatar billede midgaardsorm Nybegynder
29. december 2008 - 15:52 #13
Arne_v:
Jeg er klar over at det vil give mig hovedbrud når der er kommet 8000 batch mere ind i systemet men det er ikke relevant at sorterer på år eller batch...for nu :-)
Batch 1 kom 16-03-2006 og 2061 d. 21-12-2008 så jeg har noget tid til at finde en løsning.
Jeg ved at formatet ændre sig men jeg har nu 1 år til at lave en funktion der vælger formateringen efter om året er 08, 09 eller 10 for at undgå det kommer til at hedde 00.

Dette batch-system skulle være klar til brug d. 1-1-09 så må jeg redde mig ud af problemerne med tiden.
Avatar billede midgaardsorm Nybegynder
29. december 2008 - 15:55 #14
Jeg synes i øvrigt at jeg engang så at man kunne sætte en INT til at starte med 00001 og tælle derfra ?
Avatar billede arne_v Ekspert
29. december 2008 - 21:07 #15
Bruger du 2000 eller 2005 ?

Hvis 2005 så kunne du lave en CLR funktion til at lave præcis den formatering du ønsker.
Avatar billede midgaardsorm Nybegynder
30. december 2008 - 13:24 #16
SQLEXPRESS2005
Avatar billede midgaardsorm Nybegynder
07. januar 2009 - 10:48 #17
Problemet løste sig selv.....min chef vil ikke have batch-styrring alligevel !!

Dejligt at spilde sin tid.

Point til aaberg_cc
Avatar billede aaberg Nybegynder
07. januar 2009 - 12:31 #18
:-)
Avatar billede midgaardsorm Nybegynder
12. januar 2009 - 11:03 #19
AAAAA
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester