Tenho a sub abaixo no access para testar se uma tabela já tem um registro que quero incluir.
'Verifica se o Registro existe no Morto caso exista não executa o Arquivo, pois dará Duplicidade
Dim IDsEncontrados As Recordset
If Not IsNull(Me.RG) Then
strSQL = " SELECT rg FROM tabela2 WHERE rg = " & Me.RG & ""
Set IDsEncontrados = CurrentDb.OpenRecordset(strSQL)
End If
If IDsEncontrados.RecordCount <> 0 Then ' Encontrou RG no Morto
MsgBox "Esse Registro já existe no morto, vou abrir a ficha do Morto!!" & Chr(13) & "E nela você deverá excluir o registro desse RG" & Chr(13) & " e depois repetir a operação de Arquivar no Morto, OK ?", vbInformation, "Aviso já existe no Morto"
DoCmd.OpenForm "morto", acNormal, , "rg = " & IDsEncontrados("rg")
Exit Sub
Else
MsgBox "Pode arquivar no morto que não tem duplicidade", vbInformation, " Aviso"
'End If
End If
Tenho a sub abaixo em um projeto VB6 para incluir o registro em outra tabela (ela não verifica se já existe na outra) se tiver dá erro.
Private Sub Arquivar_Click()
Dim strNOME As String
Dim strRG As String
Dim lngCustID As Long
Dim lngNewSelIndex As Long
If lvwCustomer.SelectedItem Is Nothing Then
MsgBox "Não tem Nome selecionado para Arquivar.", _
vbExclamation, _
"ARQUIVAR - MORTO"
Exit Sub
End If
With lvwCustomer.SelectedItem
strNOME = .text
strRG = .SubItems(mlngCUST_RG_IDX)
lngCustID = CLng(.SubItems(mlngCUST_ID_IDX))
End With
If MsgBox("Você tem certeza que quer Arquivar Nome '" _
& strNOME & " " & strRG & "'?", _
vbYesNo + vbQuestion, _
"Confirma Exclusão") = vbNo Then
Exit Sub
End If
mobjCmd.CommandText = "INSERT INTO Morto SELECT * FROM Customer WHERE CustID = " & lngCustID
mobjCmd.Execute
mobjCmd.CommandText = "DELETE FROM Customer WHERE CustID = " & lngCustID
mobjCmd.Execute
With lvwCustomer
If .SelectedItem.Index = .ListItems.Count Then
lngNewSelIndex = .ListItems.Count - 1
Else
lngNewSelIndex = .SelectedItem.Index
End If
.ListItems.Remove .SelectedItem.Index
If .ListItems.Count > 0 Then
Set .SelectedItem = .ListItems(lngNewSelIndex)
lvwCustomer_ItemClick .SelectedItem
Else
ClearCurrRecControls
End If
End With
' Informa o total de registros do bd
Set mobjRst = New ADODB.Recordset
mobjRst.CursorLocation = adUseClient
mobjRst.Open "Select * From Customer", mobjConn, adOpenKeyset, adLockOptimistic, adCmdText
Label25.Caption = "Total de Registros = " & mobjRst.RecordCount
End Sub
Na General declarations esta assim
Option Explicit
Private mobjConn As ADODB.Connection
Private mobjCmd As ADODB.Command
Private mobjRst As ADODB.Recordset
Como faço para incluir a sub do access no inicio da sub arquivar para fazer a verificação antes de prosseguir com a inclusão e não dar o erro?
Os comandos da sub do access tem que ser modificados? qual os comando que tem que ser trocados para o vb reconhecer?
Pergunta
Flecha
Olá,
Tenho a sub abaixo no access para testar se uma tabela já tem um registro que quero incluir.
'Verifica se o Registro existe no Morto caso exista não executa o Arquivo, pois dará Duplicidade Dim IDsEncontrados As Recordset If Not IsNull(Me.RG) Then strSQL = " SELECT rg FROM tabela2 WHERE rg = " & Me.RG & "" Set IDsEncontrados = CurrentDb.OpenRecordset(strSQL) End If If IDsEncontrados.RecordCount <> 0 Then ' Encontrou RG no Morto MsgBox "Esse Registro já existe no morto, vou abrir a ficha do Morto!!" & Chr(13) & "E nela você deverá excluir o registro desse RG" & Chr(13) & " e depois repetir a operação de Arquivar no Morto, OK ?", vbInformation, "Aviso já existe no Morto" DoCmd.OpenForm "morto", acNormal, , "rg = " & IDsEncontrados("rg") Exit Sub Else MsgBox "Pode arquivar no morto que não tem duplicidade", vbInformation, " Aviso" 'End If End IfTenho a sub abaixo em um projeto VB6 para incluir o registro em outra tabela (ela não verifica se já existe na outra) se tiver dá erro.Private Sub Arquivar_Click() Dim strNOME As String Dim strRG As String Dim lngCustID As Long Dim lngNewSelIndex As Long If lvwCustomer.SelectedItem Is Nothing Then MsgBox "Não tem Nome selecionado para Arquivar.", _ vbExclamation, _ "ARQUIVAR - MORTO" Exit Sub End If With lvwCustomer.SelectedItem strNOME = .text strRG = .SubItems(mlngCUST_RG_IDX) lngCustID = CLng(.SubItems(mlngCUST_ID_IDX)) End With If MsgBox("Você tem certeza que quer Arquivar Nome '" _ & strNOME & " " & strRG & "'?", _ vbYesNo + vbQuestion, _ "Confirma Exclusão") = vbNo Then Exit Sub End If mobjCmd.CommandText = "INSERT INTO Morto SELECT * FROM Customer WHERE CustID = " & lngCustID mobjCmd.Execute mobjCmd.CommandText = "DELETE FROM Customer WHERE CustID = " & lngCustID mobjCmd.Execute With lvwCustomer If .SelectedItem.Index = .ListItems.Count Then lngNewSelIndex = .ListItems.Count - 1 Else lngNewSelIndex = .SelectedItem.Index End If .ListItems.Remove .SelectedItem.Index If .ListItems.Count > 0 Then Set .SelectedItem = .ListItems(lngNewSelIndex) lvwCustomer_ItemClick .SelectedItem Else ClearCurrRecControls End If End With ' Informa o total de registros do bd Set mobjRst = New ADODB.Recordset mobjRst.CursorLocation = adUseClient mobjRst.Open "Select * From Customer", mobjConn, adOpenKeyset, adLockOptimistic, adCmdText Label25.Caption = "Total de Registros = " & mobjRst.RecordCount End SubNa General declarations esta assimComo faço para incluir a sub do access no inicio da sub arquivar para fazer a verificação antes de prosseguir com a inclusão e não dar o erro?
Os comandos da sub do access tem que ser modificados? qual os comando que tem que ser trocados para o vb reconhecer?
Obrigado
Flecha
Editado por FlechaLink para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.