GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Histórico  Ir para Fóruns  Access Histórico    excluir registro- socorro

Somente Leitura Somente Leitura Tópico
Go
Novo
Procurar
Notificar
Ferramentas
-star Rating Vote!  Login/Cadastrar 
Estagiário

postado
Gente por favor me ajude,meu tempo está
esgotando,vejam o texto abaixo:

Este é o fragmento de código que uso para excluir registros. Ao roda-lo recebo a seguinte mensagem:
" Você está prestes a excluir 0 linhas(s) da tabela especificada", quando
deveria aparecer ... excluir n linha(s)... em vez de 0

A tempos tento excuir todos os registros da tabela, que atenda a essa condição
da SQL,ou seja, execluuir todos os registros que sejam 'cotas cadastradas' e com datas
anterior ao mes atual.
Se estamos em julho, todos os registros com `cotas cadastradas' e datas anteriores
deveriam ser excluidos. Em meu banco de dados, só tenho registros com datas no
mes de abriu. exemplo: 05/04/02,logo a intrução SQL abaixo deveria funcionar.
Será que o outro lado da SQL está falhando ? será que tipo ='cotas cadastradas'não
está funcionando ou está sendo incarada como um grupo de caracteres diferente
do que está no banco ? eu copiei a sentença exatamente como foi gravado lá
O que está faltando ?

Eis o fragmento de código. para mim parece estar tudo certo Entrtando nada ocorre.

Por favor ajudem
.
.
.
Case 4

DoCmd.RunSQL "DELETE * FROM contratos WHERE tipo ='cotas cadastradas' AND data < " & Format[Date - Day[Date) + 1, "\#mm\/dd\/yyyy\#")
Debug.Print "Registros Excluidos Tab. contratos: " '' Este Metodo nâo existe em Acess & db.recordsaffeced
'
If Rstcontratos.RecordCount = 0 Then
TxtContrato = ""
TxtDN = ""
Txtdata = ""
'
TxtContrato.Enabled = False
TxtDN.Enabled = False
Txtdata.Enabled = False
Opcoes.Enabled = False
Incluir.Enabled = True
Excluir.Enabled = False
Alterar.Enabled = False
Proximo.Enabled = False
Anterior.Enabled = False
Incluir.SetFocus
Ok.Enabled = False
Cancelar.Enabled = False
Sair.Enabled = True
Else
TxtContrato.Enabled = False
TxtDN.Enabled = False
Txtdata.Enabled = False
Opcoes.Enabled = False
'
Busca_por_Codigo.Enabled = True
Busca_por_Codigo = "Contrato"
Incluir.Enabled = True
If Rstcontratos.EOF Then
Excluir.Enabled = False
EXCLUIR_CONTRAT_CADASTR_MES_ANTERIOR.Enabled = False
Alterar.Enabled = False
Anterior.Enabled = False
Proximo.Enabled = False
Else
Excluir.Enabled = True
EXCLUIR_CONTRAT_CADASTR_MES_ANTERIOR.Enabled = True
Alterar.Enabled = True
Anterior.Enabled = True
Proximo.Enabled = True
End If
Incluir.SetFocus
Incluir.Enabled = True
Ok.Enabled = False
Cancelar.Enabled = False
Sair.Enabled = True
Sair.SetFocus
Incluir.Enabled = False
If Rstcontratos.RecordCount <> 0 Then
If botao = 1 Then
Rstcontratos.Bookmark = regatu
botao = 0
End If
End If
Call JogaNasCaixas

End If

botao = 0

End Select
[LIST]
 
Postagens: 26 | Registrado: 20 September 2001Report This Post
Analista Sênior

postado Hide Post
Você tem certeza que os registros não estão sendo deletados?

Porque para usar a propriedade RecordsAffected você precisa usar o método Execute. Não funciona com Runsql!

Se os campos Tipo e data da tabela Contratos forem respectivamente do Tipo Texto e data/hora, deveria funcionar.


Uma sugestão para que você consiga isolar o problema, se é que existe:

1. Ative um ponto de interrupão na linha DoCmd.RunSQL ...;

2. Execute o código;

3. quando ocorrer a interrupção, copie a sequência após o método RunSql, abra a janela depurar (Ctrl + G), cole a sequência e coloque um ponto de interrogação na frente e tecle enter;

(na janela depurar deve ficar assim)

? "DELETE * FROM contratos WHERE tipo ='cotas cadastradas' AND data < " & Format[Date - Day[Date) + 1, "\#mm\/dd\/yyyy\#")

(Após o enter, deve aparecer algo como isto Smile

DELETE * FROM contratos WHERE tipo ='cotas cadastradas' AND data < #07/01/2002#

4. Agora copie esta sequência resultante e cole-a no modo SQL de uma nova consulta e abra (não execute) no modo folha de dados para ver se funciona/seleciona algo. Se houver erros, será mais fácil de depurar.

Date, ou Date(), é uma função do VBA que retorna a data corrente
 
Postagens: 1589 | Localização: Porto Alegre | Registrado: 03 April 2002Report This Post
Analista Pleno

postado Hide Post
Porque usar "\#mm\/dd\/yyyy\#"
como string de formatação ao invés de "mm/dd/yyyy"?
 
Postagens: 907 | Localização: Rio de Janeiro | Registrado: 02 December 2001Report This Post
Analista Sênior

postado Hide Post
Como a intenção é construirmos uma sequência SQL, datas devem necessariamente estar no formato americano, ou seja, mês barra dia barra ano, e entre ##.

Os resultados abaixo serão idênticos:

"data=#" & Format(minhaData, "mm\/dd\/yyyy") & "#"

ou

"data=" & Format(minhaData, "\#mm\/dd\/yyyy\#")

Sempre uso a primeira por me parecer a mais prática, sendo que normalmente defino o formato "\#mm\/dd\/yyy\#" como uma constante global. O primeiro exemplo fica assim:

Public Const DATASQL as String = "\#mm\/dd\/yyy\#"
"data=" & Format(minhaData, DATASQL )

Também considero uma boa prática reforçar com a contrabarra a barra como separador de mês, dia e ano, porque esta barra é outra exigência do formato americano. Se algum dos seus usuários alterar as configurações regionais de seu computador para usar hífen ou ponto como separador, se não houver este reforço sua aplicação terá problemas.
 
Postagens: 1589 | Localização: Porto Alegre | Registrado: 03 April 2002Report This Post
  Powered by Social Strata  

Somente Leitura Somente Leitura Tópico

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Histórico  Ir para Fóruns  Access Histórico    excluir registro- socorro

©