2016-04-07 4 views
1

Ich habe ein Problem, den Wert der letzten id aus einer Tabelle zu bekommen.wo zu laden SELECT MAX (ID) in Vbnet

Da das Laden der ganzen Spalte mir ein Problem in der Zukunft geben wird (DataTable hat sein Limit), so entschied ich mich, nach einer anderen Lösung zu suchen, aber ich habe kein Glück, es zu arbeiten.

Ich habe den String-Befehl, aber ich weiß nicht, wo der zurückgegebene Wert gespeichert werden soll. Hier ist mein Code:

 Dim query As String = "SELECT MAX(id) AS LastId FROM Table1" 
    Dim dtmain As New DataTable 
    Try 
     With sqlcmd 
      .CommandText = query 
      .Connection = sqlcon 
     End With 

     With sqladp 
      .SelectCommand = sqlcmd 
      .Fill(dtMain) 
     End With 
     MsgBox("last id = " & dtmain.Rows(0)("LastId")) 
    Catch ex As Exception 

    End Try 

ich nichts und die msgbox nicht einmal zeigen.

Anmerkung: Ich möchte die letzte id vom Tisch und NICHT die eingelegte id.

Dies sind meine Referenzen und Erklärungen:

Imports System.Data.OleDb 
    Private conn As OleDbConnection 
    Private adapter As OleDbDataAdapter 
    Private cmdd As OleDbCommand 

Ich habe auch Microsoft ADO Ext 2.8 for DDL and Security an meinem Projekt Referenz

Antwort

1

Wenn Quelle Ihrer Daten in der aktuellen Datenbank:

Dim dbConnect As Database 
Dim rstRecordset As DAO.Recordset 

Set dbConnect = Access.CurrentDb 

Dim query As String = "SELECT MAX(id) AS LastId FROM Table1" 

Set rstRecordset = dbConnect .OpenRecordset(query) 
MsgBox("last id = " & rstRecordset.Fields(0).value & "")) 

dbConnect.Close 
Set dbConnect = Nothing 
Set rstRecordset = Nothing 

Wenn Quelle Ihrer Daten befindet sich in einer anderen Access-Datenbank:

Dim cnnConn As ADODB.connection 
Dim rstRecordset As ADODB.Recordset 
Dim cmdCommand As ADODB.Command 

' Open the connection. 
Set cnnConn = New ADODB.connection 
With cnnConn 
    .ConnectionString = _ 
     "Provider=Microsoft.Jet.OLEDB.4.0" 
    .Properties("Jet OLEDB:Database Password") = "pass" 
    .Open "D:\Databases\Database.mdb" 
End With 

' Set the command text. 
Set cmdCommand = New ADODB.Command 
Set cmdCommand.ActiveConnection = cnnConn 
With cmdCommand 
    .CommandText = "SELECT MAX(id) AS LastId FROM Table1" 
    .CommandType = adCmdText 
    .Execute 
End With 

' Open the recordset. 
Set rstRecordset = New ADODB.Recordset 
Set rstRecordset.ActiveConnection = cnnConn 
rstRecordset.Open cmdCommand 
MsgBox("last id = " & rstRecordset.Fields(0).value & "")) 

' Close the connections and clean up. 
cnnConn.Close 
Set cmdCommand = Nothing 
Set rstRecordset = Nothing 
Set cnnConn = Nothing 
+0

Fehler Typ 'DAO.Recordset' ist nicht definiert. \t Fehler 'CurrentDB' ist nicht deklariert. Es ist möglicherweise aufgrund seines Schutzniveaus nicht zugänglich. \t "Ich habe versucht, die Fehler zu beheben, indem ich" Microsoft ActiveX Data Objects 2.x Bibliothek "hinzugefügt habe, aber den zweiten Fehler nicht behoben." Ich werde meine Referenzen hinzufügen, vielleicht hilft es – pwalaako2

+0

scheint so, als müsste ich adodb vor i lernen kann die Funktion voll ausnutzen ... ich werde jetzt abstimmen :) – pwalaako2