Você está offline; aguardando reconexão

INFO: O fornecedor de OLE DB Jet versão 4.0 suporta SELECT @@ Identity

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 232144
Sumário
O fornecedor de versão 4.0 OLE DB Jet suporta a consulta SELECT @@ Identity que lhe permite obter o valor do campo de incremento automático gerado na ligação. Valores de incremento automático utilizados nas outras ligações à base de dados não afectam os resultados desta consulta especializada. Esta funcionalidade funciona com bases de dados Jet 4.0, mas não com formatos mais antigos.
Mais Informação
O seguinte código demonstra a utilização a SELECT @@ Identity para obter o valor do campo de incremento automático recém-inserido. O fragmento de código também inclui código para criar a tabela para a consulta.
Dim cnDatabase As ADODB.ConnectionDim rsNewAutoIncrement As ADODB.RecordsetDim strConn As StringDim strSQL As StringDim strPathToMDB As String   strPathToMDB = "C:\NewJet4.MDB"strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _           "Data Source=" & strPathToMDB & ";"Set cnDatabase = New ADODB.Connection    cnDatabase.Open strConn        strSQL = "CREATE TABLE AutoIncrementTest " & _             "(ID int identity, Description varchar(40), " & _             "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"    cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords        strSQL = "INSERT INTO AutoIncrementTest " & _             "(Description) VALUES ('AutoIncrement Test')"    cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords        strSQL = "SELECT @@Identity"    Set rsNewAutoIncrement = New ADODB.Recordset    rsNewAutoIncrement.Open strSQL, cnDatabase, adOpenForwardOnly, _                            adLockReadOnly, adCmdText    MsgBox "New Auto-increment value is: " & rsNewAutoIncrement(0).Value    rsNewAutoIncrement.Close    Set rsNewAutoIncrement = Nothing    strSQL = "DROP TABLE AutoIncrementTest"    cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords    cnDatabase.CloseSet cnDatabase = Nothing				
graças para esta funcionalidade recentemente, pode ver os valores de incremento automático recentemente na conjuntos de registos do ActiveX Data Objects (ADO) lado do cliente no ADO 2.1 e versões posterior. Quando submeter a nova linha para o fornecedor de Jet chamando Update ou UpdateBatch (consoante a escolha de LockType), o motor do cursor ADO gera uma consulta INSERT INTO para criar a nova linha na tabela. Se o conjunto de dados contiver um campo de incremento automático, o ADO também irá gerar uma consulta SELECT @@ Identity para obter o valor gerado para esse campo de incremento automático. O seguinte código demonstra esta funcionalidade:
Dim cnDatabase As ADODB.ConnectionDim rsNewAutoIncrement As ADODB.RecordsetDim strConn As StringDim strSQL As StringDim strPathToMDB As String    strPathToMDB = "C:\NewJet4.MDB"strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _          "Data Source=" & strPathToMDB & ";"    Set cnDatabase = New ADODB.Connection    cnDatabase.Open strConn        strSQL = "CREATE TABLE AutoIncrementTest " & _             "(ID int identity, Description varchar(40), " & _             "CONSTRAINT AutoIncrementTest_PrimaryKey PRIMARY KEY (ID))"    cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords    strSQL = "SELECT ID, Description FROM AutoIncrementTest"    Set rsNewAutoIncrement = New ADODB.Recordset    rsNewAutoIncrement.CursorLocation = adUseClient    rsNewAutoIncrement.Open strSQL, cnDatabase, adOpenStatic, _                            adLockOptimistic, adCmdText    rsNewAutoIncrement.AddNew    rsNewAutoIncrement("Description").Value = "AutoIncrement Test"    rsNewAutoIncrement.Update    MsgBox "New Auto-increment value is: " & rsNewAutoIncrement(0).Value    rsNewAutoIncrement.Close    Set rsNewAutoIncrement = Nothing    strSQL = "DROP TABLE AutoIncrementTest"    cnDatabase.Execute strSQL, , adCmdText + adExecuteNoRecords    cnDatabase.CloseSet cnDatabase = Nothing				
pode criar uma nova base de Jet 4.0 dados a utilizar o Microsoft Access 2000 ou utilizar a biblioteca ADOX que está incluída no MDAC 2.1. Para utilizar esta biblioteca no projecto do Visual Basic, crie uma referência à Microsoft ADO Ext. 2.1 for DDL and Security . Em seguida, pode utilizar código semelhante ao seguinte para criar uma nova base de dados Jet 4.0:
Dim strPathToMDB As StringDim catNewDatabase As ADOX.Catalog        strPathToMDB = "C:\NewJet4.MDB"    If Dir(strPathToMDB) <> "" Then        Kill strPathToMDB    End If    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _              "Data Source=" & strPathToMDB & ";"    Set catNewDatabase = New ADOX.Catalog    catNewDatabase.Create strConn    Set catNewDatabase = Nothing				
para determinar o formato de base de dados do Microsoft Access, verifique as propriedades "Jet OLEDB:Engine tipo" dinâmica na colecção de propriedades do objeto Connection. A propriedade devolverá um valor de 5 para bases de dados do Jet 4.x. Fragmento de código seguinte demonstra a utilização da propriedade:
Dim cnDatabase As ADODB.ConnectionDim strConn As StringDim strPathToMDB As String    strPathToMDB = "C:\NewJet4.MDB"strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _          "Data Source=" & strPathToMDB & ";"Set cnDatabase = New ADODB.Connection    cnDatabase.Open strConn    If cnDatabase.Properties("Jet OLEDB:Engine Type").Value = 5 Then        MsgBox "Jet 4.0 database"    Else        MsgBox "Not a Jet 4.0 database"    End If    cnDatabase.CloseSet cnDatabase = Nothing				
Referências
Microsoft Data Access SDK; procura de: "Provider-Defined propriedades"; tópico: "DBPROPSET_JETOLEDB_DBINIT"
AutoIncrement de identidade de Jet ADOX

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 232144 - Última Revisão: 12/03/2003 18:25:00 - Revisão: 3.1

Microsoft OLE DB Provider for Jet 4.0, Microsoft Data Access Components 2.1 Service Pack 2, Microsoft Data Access Components 2.5, Microsoft Data Access Components 2.6, Microsoft Data Access Components 2.7, Microsoft ActiveX Data Objects 2.1 Service Pack 2, Microsoft ActiveX Data Objects 2.5, Microsoft ActiveX Data Objects 2.6, Microsoft ActiveX Data Objects 2.7, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0

  • kbmt kbdatabase kbinfo kbjet KB232144 KbMtpt
Comentários