2011-10-04 5 views
0

와 텍스트 상자에 MySQL의에서 일련 번호 이것은 내가 만드는거야 헬프 데스크 발권 프로그램입니다 :표시 Visual Basic의

사용자가 내가 MySQL의에서 일련 번호를 표시 할 수 있도록하려면 티켓을 시작 클릭

그 사용자가 나중에 티켓을 추적 할 수 있도록 채워지는 현재 티켓과 일치합니다. 모든 것을 설정했지만 티켓 ID를 텍스트 상자에 어떻게 표시 할 수 있는지 잘 모르겠습니다.

지금 당장 폼이로드 될 때 다음 티켓 ID 번호를 얻기 위해 쿼리를 실행하고 있지만 텍스트 상자에 텍스트로 표시하는 방법을 모르겠습니다. ,

Dim conn As New MySqlConnection(connStr) 
Dim cmd As New MySqlCommand() 
Dim Reader As MySqlDataReader 
Dim submitteddate As String 

'QUERY FOR NEW ID TICKET NUMBER 
Private Sub Suggestions_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    Try 
     Dim idQ As String = "INSERT INTO tblit (itID, ersBugIssue, ersSubject, ersBugCategory, ersBugDate, ersBugSubmittedby, ersBugOrHelp)" & _ 
           "VALUES (NULL, NULL, NULL, NULL, NULL, NULL, NULL);" 
     Dim cmd As new SQLCommand() 
     With cmd 
      .Connection = conn 
      .CommandText = idQ 
     End With 

     conn.Open() 
     cmd.ExecuteNonQuery() 
     cmd.CommandText = "SELECT LAST_INSERT_ID() as NewTicketID" 
     Dim Reader As SqlDataReader = cmd.ExecuteReader() 
     Reader.Read() 
     MsgBox(Reader("NewTicketID")) 
     Reader.Close() 

     conn.Close() 
     Catch ex As Exception 
      MsgBox(ex.ToString) 
     End Try 
End Sub 

답변

1

"SELECT MAX(itID)+1 AS Expr1 FROM(TableName)"

나쁜 생각인가 :

'QUERY FOR NEW ID TICKET NUMBER 
Private Sub Suggestions_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    Dim idQuery As String = "SELECT MAX(itID)+1 AS Expr1 FROM(TableName)" 

    With cmd 
     .Connection = conn 
     .CommandText = idQuery 
     .CommandType = CommandType.Text 
    End With 

    Try 
     conn.Open() 
     cmd.ExecuteNonQuery() 
     conn.Close() 
     Me.Close() 
    Catch ex As Exception 
     MsgBox(ex.ToString) 
     conn.Close() 
    End Try 

지금 나는이로 변경 관리하지만, 난 여전히 내가 쉬르 EIF가 맞습니다 아니에요 원인을 끊었지고있어 당신은 동시성 문제를 매우 빨리 처리 할 것입니다.
대신 다음 SQL 문을 실행해야합니다.

INSERT INTO tablename (ID, morefields) 
    VALUES (NULL, real_values_or_place_holders); 
SELECT LAST_INSERT_ID() as NewTicketID; 
-- After the ticket is complete 
UPDATE tablename SET morefields = <thedata> WHERE id = NewTicketID 

-- If the ticket gets cancelled: 
DELETE FROM tablename WHERE id = NewTicketID 

당신은 당신이 중복되거나 잘못된 TicketID이 실행되는 문제로 실행되지 않을 것 같은 그것을 할 경우.

select을 수행하는 경우 비 쿼리라고 말할 수 없습니다.

사용하여 다음 코드

Dim cmd As New SqlCommand() 
cmd.Connection = conn 
cmd.CommandText = "SELECT LAST_INSERT_ID() AS NewTicketID" 
Dim reader As SqlDataReader = cmd.ExecuteReader() 
reader.Read 
MsgBox(reader("NewTicketID")) 
+0

'가 ExecuteReader는'내가 처음에 다음 null 값을 삽입해야 이해 나는 또한 – MDL

+0

를 받고있어 구문 오류 '문자열'의 구성원 인 아닌 I 그들을 업데이트 할 수 있습니다. 그러나 "다음 코드 사용"섹션에 도착했을 때 나를 잃어 버렸습니다. – MDL

+0

'처음에는 null 값을 삽입해야하고 그 다음에 업데이트 할 수 있습니다. '라는 것이 맞습니다. 먼저 null을 삽입하고 ** 다음에 * *'last_insert_id()를 선택하고 업데이트 (또는 삭제)합니다. 표시된 코드 스 니펫은 선택 항목입니다. – Johan

관련 문제