VERIFICAR DADOS ANTES DE GRAVAR
Bom dia amigos, estou com um caso aqui muito bobo, que estou ate com vergonha de postar aqui para vcs.. rs rs.. seguinte, estou fazendo um sistema de agendamentos, melhor, peguei o fonte de um programador que programa em DAO, queria migrar o sistema todo para um novo banco de dados, como por exemplo SQL server que trabalho, mas sabem como é, o cliente nao quer migrar de jeito nenhum, entao to querendo fazer o seguinte, antes de eu gravar a operação quero verificar se ja contem uma informacao com aqueles mesmos dados no banco, se ja contiver nao e para fazer o update no banco, e simplesmente para ele mudar o foco para o campo, exemplo.
COLABORADOR = FERNANDO
DATA = 15/01/2000
HORA = 07:00
Se ja tiver 1 registro no banco nessas caracteristicas o sistema vai travar o update e dar a mensagem que ja existe esse horario agendado, e vai mudar para o campo de horas para a pessoa trocar a hora. olha o codigo que to tentando fazer isso.
Data1.RecordSource = [Ô]select * from movligacoes where tecnicoa=[ô][Ô] & txtColaborador.Text & [Ô][ô] and horainicio=[ô][Ô] & txtdata.Text & [Ô][ô] and datainicio = #[Ô] & Format(MCalendario.Value, [Ô]mm/dd/yyyy[Ô]) & [Ô]# order by horainicio[Ô]
Data1.Refresh
if Data1.Recordset.RecordCount <> 0 Then
MsgBox [Ô]Já existe uma ocorrência cadastrada para este colaborador nesta hora![Ô], vbInformation, [Ô]Aviso[Ô]
txtHora.SetFocus: Exit Sub
End If
else
txtAlocacao.Text = Format(Date, [Ô]dd/mm/yyyy[Ô]) & [Ô] - [Ô] & Format(Time, [Ô]hh:mm:ss[Ô])
Data1.Recordset.Update
End If
Lembrando que to usando DAO, e que os controles sao todos vinculados. Abraços a todos e ate mais.
COLABORADOR = FERNANDO
DATA = 15/01/2000
HORA = 07:00
Se ja tiver 1 registro no banco nessas caracteristicas o sistema vai travar o update e dar a mensagem que ja existe esse horario agendado, e vai mudar para o campo de horas para a pessoa trocar a hora. olha o codigo que to tentando fazer isso.
Data1.RecordSource = [Ô]select * from movligacoes where tecnicoa=[ô][Ô] & txtColaborador.Text & [Ô][ô] and horainicio=[ô][Ô] & txtdata.Text & [Ô][ô] and datainicio = #[Ô] & Format(MCalendario.Value, [Ô]mm/dd/yyyy[Ô]) & [Ô]# order by horainicio[Ô]
Data1.Refresh
if Data1.Recordset.RecordCount <> 0 Then
MsgBox [Ô]Já existe uma ocorrência cadastrada para este colaborador nesta hora![Ô], vbInformation, [Ô]Aviso[Ô]
txtHora.SetFocus: Exit Sub
End If
else
txtAlocacao.Text = Format(Date, [Ô]dd/mm/yyyy[Ô]) & [Ô] - [Ô] & Format(Time, [Ô]hh:mm:ss[Ô])
Data1.Recordset.Update
End If
Lembrando que to usando DAO, e que os controles sao todos vinculados. Abraços a todos e ate mais.
Há, lembrando o seguinte pessoal, fazendo essa verificaçao de cima o sistema esta verificando errado, ou seja, se eu cadastro a ocorrencia para a pessoa e coloco uma hora que nao tem no banco, o sistema da a mensagem que ja existe a ocorrencia cadastrada, ou seja, independemente da verificacao ele esta gravando a informaçao no banco..
qual é o tipo do campohora, é tipo texto?
Citação:sim amigo, o campo hora e tipo texto, eu so formatei ele de acordo com minhas necessidades, exemplo ##:##, Há.. com relacao a isso aqui txtAlocacao.Text = Format(Date, [Ô]dd/mm/yyyy[Ô]) & [Ô] - [Ô] & Format(Time, [Ô]hh:mm:ss[Ô]), isso e um campo texto livre, nao esta em formato de data e hora nao.. ok..MARCELO-TREZE escreveu:
qual é o tipo do campohora, é tipo texto?
você diz que o formato da hora está como ##:##
então no textbox deduz que esteja colocando algo assim 12:33 e não assim 12:33:00 pois isto pode estar ocasionando o erro.
então no textbox deduz que esteja colocando algo assim 12:33 e não assim 12:33:00 pois isto pode estar ocasionando o erro.
Citação:Hum amigo, nao foi isto nao, eu deixei o campo sem formatação, e mesmo assim deu a mensagem que ja havia uma informação no banco ..MARCELO-TREZE escreveu:
você diz que o formato da hora está como ##:##
então no textbox deduz que esteja colocando algo assim 12:33 e não assim 12:33:00 pois isto pode estar ocasionando o erro.
Help-me please.. rs rs..
faça o teste incluindo os dados direto na query
Data1.Refresh
Data1.RecordSource = [Ô]select * from movligacoes where tecnicoa=[ô]marcos[ô] and horainicio=[ô]01:13:00[ô] and datainicio = #10/05/2009# order by horainicio[Ô]
Data1.Refresh
Citação:Amigo, saquei o que ta pegando, veja bem : tenho um botao INCLUIR, quando clico nele, ele executa o comando DATA.RECORDSET.ADDNEW, antes de gravar se coloco para pesquisar, exemplo DATA.RECORDSOURCE=[Ô]SELECT ... ETC... [Ô], ele automaticamente grava a informaçao no banco, ou seja, o select força a gravaçao no banco de dados, eu queria fazer so essa tela desvinculada .. ai nao daria esse problema, mas veja so.. usar uma tela apenas em ADO e o resto tudo DAO, é osso, sera que alguem pode me dar uma luzinha???? valeuuuss..MARCELO-TREZE escreveu:
faça o teste incluindo os dados direto na queryData1.RecordSource = [Ô]select * from movligacoes where tecnicoa=[ô]marcos[ô] and horainicio=[ô]01:13:00[ô] and datainicio = #10/05/2009# order by horainicio[Ô]
Data1.Refresh
posta o código deste botão incluir
Citação:MARCELO-TREZE escreveu:
posta o código deste botão incluir
Private Sub Form_Load()
Data1.RecordSource = ([Ô]select * from movligacoes where MovStatus = [ô][Ô] & [Ô]Pendente[Ô] & [Ô][ô] and datainicio = #[Ô] & Format(MCalendario.Value, [Ô]mm/dd/yyyy[Ô]) & [Ô]# order by datainicio[Ô])
Data1.Refresh
End Sub
Private Sub MCalendario_DateClick(ByVal DateClicked As Date)
Data1.RecordSource = ([Ô]select * from movligacoes where MovStatus = [ô][Ô] & [Ô]Pendente[Ô] & [Ô][ô] and datainicio = #[Ô] & Format(MCalendario.Value, [Ô]mm/dd/yyyy[Ô]) & [Ô]# order by datainicio[Ô])
Data1.Refresh
End Sub
Private Sub Tool1_ButtonClick(ByVal ButtonIndex As Integer, ByVal ButtonKey As String)
Select Case ButtonIndex
Case 7
[ô]Inclusão de Registros
Data1.Recordset.AddNew
txtDInicial.Text = MCalendario.Value
With frmProcCli
.Tool1.ButtonVisible(7) = False
.Tool1.ButtonVisible(8) = False
.Tool1.ButtonVisible(9) = False
.Show 1
End With
Case 9
[ô]Gravar Registros
If txtColaborador.Text = Empty Then
txtStatus.Text = [Ô]Em Espera[Ô]
Else
txtStatus.Text = [Ô]Pendente[Ô]
End If
If txtColaborador.Text <> [Ô][Ô] And Text1.Text <> [Ô][Ô] Then
Data1.RecordSource = ([Ô]select * from movligacoes where MovStatus = [ô][Ô] & [Ô]Pendente[Ô] & [Ô][ô] and datainicio = #[Ô] & Format(MCalendario.Value, [Ô]mm/dd/yyyy[Ô]) & [Ô]# order by datainicio[Ô])
Data1.Refresh
if data1.RecordCount <> 0 Then
MsgBox [Ô]Já existe uma ocorrência cadastrada para este colaborador nesta hora![Ô], vbInformation, [Ô]Checkup Service[Ô]
txtHora.SetFocus: Exit Sub
else
txtAlocacao.Text = Format(Date, [Ô]dd/mm/yyyy[Ô]) & [Ô] - [Ô] & Format(Time, [Ô]hh:mm:ss[Ô])
Data1.Recordset.Update
End If
End If
End Select
End Sub
Tópico encerrado , respostas não são mais permitidas