2014-04-25 14 views
0
 Dim sqlsporring As String = "SELECT MAX(pID) AS pID FROM person_kunde" 

    kobling.sporring(user, password, sqlsporring) 
    svar = kobling.hentData() 

    Dim temprad As DataRow 
    Dim nyID, modID As String 
    For Each temprad In svar.Rows 
     nyID = temprad("pID") 
     modID = nyID + 1 
     nyKundeId = modID 
    Next temprad 

이 코드는 필자에게 필요한 것을 제공합니다. 그것은 데이터베이스에서 가장 높은 ID를 찾고 (이 경우 새 사용자) 1에 의해 증가 된 값을 ID로 제공합니다. 문제는 내 데이터베이스가이 사용자의 ID를 4 자리, 0001, 0002, 0003으로 저장한다는 것입니다 이 코드는 새로운 사용자에게 ID 4를 제공합니다.데이터베이스에 4 자리 숫자를 포함하도록 숫자를 입력하십시오.

하드 코드를 사용하여 3 x '0'을 수동으로 추가하면 어리석은 모양이되므로 새 ID를 4 자리로 설정하는 간단한 방법이 있습니까? 이 기지 내에 9 명이 넘는 사용자가있어보다 세련된 솔루션을 선호합니다.

편집 언제나처럼 모든 포인터 덕분에이 문제에 도움이되지 않았으므로 코드를 개선하고 싶습니다. 이것은 INSERT에 사용 된 그 전에

는 언급해야 - 질문, 이것은 그것을 해결 :

nyKundeId.ToString("0000") 

이 MySQL을 주셔서 감사합니다 - "0"으로 방법 전면 패드의 우편 번호를? -

+0

첫 번째 ID를 1001로 지정할 수 있습니다. –

+1

왜 수학 계산에 문자열을 사용하고 있습니까? – Stoleg

+0

옵션 추가 Strict 코드의 맨 위로 가거나 프로젝트의 속성에서 켜십시오. @Stoleg이 지적한 바와 같이 문자열을 사용하여 수학을 수행하려고합니다. –

답변

0

SELECT LPAD(field_name,4, 0) FROM table;

1

그냥 정수 4를 저장 :) 속임수를 썼는지 링크. 정말. 형식을 지정하면 LPAD() function을 사용하거나 응용 프로그램 코드에서 (선호)를 사용하여 출력에 여분의 0을 표시하도록 형식을 지정합니다. nyKundeId.PadLeft(4, "0"c) 데이터베이스가 작동하는 방식입니다.

또한 게시 한 VB 코드는 끔찍한 사용자 ID를 늘리는 방법입니다. 그것은 새로운 사용자를 동시에 생성하는 이벤트가있는 경우 같은 ID로 두 명 이상의 사용자를 생성하려고 시도 할 가능성이있는 경쟁 조건을 만듭니다. 대신, auto_increment 기능을 사용하여 데이터베이스에서이 작업을 수행하도록하십시오.

관련 문제