Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Julierme Felix

Registro entre Datas - VS2003

Recommended Posts

Pessoal tenho um sistema de agendamento para laboratório de informatica, onde o professor digita a data e escolhe a aula que ele dará (ex. 1aula a 2aula). Uma vez agendado a aula outro professor não poderia usar o horário agendado, mas o sistema esta com essa falha permitindo um outro professor agendar uma aula já agendada dentro de um intervalo.

Ex.: Prof1

Aula1 até aula5

 

Prof2

Aula3 até aula4

 

O sistema não poderia permitir o agendamento do prof2 pois as aulas3 e aual4 esta agendada para o prof1.

 

Segue o código: o q esta em vermelho é a consulta SQL para saber se a aula já esta agendada ou não

 

Dim myCB As String = "select count(*) from tblreserva where colegio=@col and escola=@esc and data=@dat and (aulainicio between @aula1 and @aula2 or aulafim between @aula1 and @aula2)"

 

o mesmo esta dentro do código abaixo

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
		Cn.Open()
		Dim dat2 As SqlDataAdapter
		Dim ds2 As DataSet
		Dim myLin As SqlCommand = Cn.CreateCommand()
		Dim myCB As String = "select count(*)  from tblreserva where colegio=@col and escola=@esc and data=@dat and (aulainicio between @aula1 and @aula2 or aulafim between @aula1 and @aula2)"
		myLin.CommandText = myCB
		myLin.Parameters.Add("@dat", SqlDbType.NVarChar).Value = editData.Text.Trim
		myLin.Parameters.Add("@col", SqlDbType.Bit).Value = CheckBox1.Checked
		myLin.Parameters.Add("@esc", SqlDbType.Bit).Value = CheckBox2.Checked
		myLin.Parameters.Add("@aula1", SqlDbType.NVarChar).Value = DropDownList1.SelectedValue.Trim
		myLin.Parameters.Add("@aula2", SqlDbType.NVarChar).Value = DropDownList2.SelectedValue.Trim
		dat2 = New SqlDataAdapter(myLin)
		ds2 = New DataSet
		dat2.SelectCommand = myLin
		Dim dr1 As SqlDataReader

		Dim resultado As Object = myLin.ExecuteScalar
		If Not resultado Is Nothing AndAlso Convert.ToInt32(resultado) > 0 Then
			MessageBox2.ShowMessage("Esse Horario já Foi Agendado!!! Favor Agendar outro Horário!!!")
		Else

			Me.Label1.Visible = True
			Me.editID.Visible = True
			Me.editID.Enabled = True
			Me.editID.Text = ProximoNumero()
			Try
				Dim drAux As DataRow
				drAux = AgendarDS1.Tables("tblreserva").NewRow
				drAux("ID") = editID.Text
				drAux("Data") = editData.Text
				drAux("AulaInicio") = DropDownList1.SelectedValue
				drAux("AulaFim") = DropDownList2.SelectedValue
				drAux("Professor") = editProfessor.Text
				drAux("Disciplina") = editDisciplina.Text
				drAux("Recurso") = editRecurso.Text
				drAux("Série") = cboserie.SelectedValue 'editSerie.Text
				drAux("Turma") = radioturma.SelectedValue 'editTurma.Text
				drAux("Colegio") = CheckBox1.Checked
				drAux("Escola") = CheckBox2.Checked

				AgendarDS1.Tables("tblreserva").Rows.Add(drAux)
				SqlDataAdapter1.Update(AgendarDS1)
				MessageBox1.ShowConfirmation("Horário Agendado com Sucesso!!! Agendar Outro Horário???", "NÃO", False, True)

				Me.editID.Visible = False
				Me.Label1.Visible = False
				editID.Text = ""
				editData.Text = ""
				DropDownList1.SelectedIndex = 0
				DropDownList2.SelectedIndex = 0
				editProfessor.Text = ""
				editDisciplina.Text = ""
				editRecurso.Text = ""
				cboserie.SelectedIndex = 0
				radioturma.ClearSelection()
				CheckBox1.Checked = False
				CheckBox2.Checked = False
			Catch
			End Try
			Cn.Close()
		End If
	   
	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

O tópico que passou é meu tb, mas é sobre agendar dentro de um intervalo de datas, aki é diferente pois é uma unica data, com agendamentos por aula.

Uma escola possui as seguintes aulas:

1ªAula

2ªAula

3ªAula

4ªAula

5ªAula

6ªAula

 

As aulas são escolhidas em dropdownlist.

 

O professor escolhe as aulas q ele irá no laboratório de informatica, ele pode usar somente uma aula ou varias aulas.

 

Exemplo

Professor A vai levar a turma da 7ºSerie no dia 09/06 e vai usar da 1ªAula a 5ªAula

Então vai sobrar somente a 6ªAula disponivel

 

O Professor B vai levar a turma da 8ªSerie no dia 09/06 e queria usar das 3ªAula até a 4ªAula. O sistema não poderia permitir o a agendamento, pois o professor A já agendou dentro do intervalo, mas aí esta acontecendo o erro, o programa esta deixando agendar.

 

Creio que o erro estar na consulta SQL

 

Dim myCB As String = "select count(*) from tblreserva where colegio=@col and escola=@esc and data=@dat and (aulainicio between @aula1 and @aula2 or aulafim between @aula1 and @aula2)"

 

Pensei em uma solução fazendo o seguinte:

Como as aulas são selecionadas no Dropdownlist, pensei em popular somente com as aulas livres que não foram agendadas, no caso do exemplo acima seria somente a 6ªaula livre que iria aparecer na Dropdownlist, isso tendo como base a data.

Mas não consegui fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando reserva a aula esta reservando todas entre as aula escolhidas?

 

Abraços...

 

A tabela reserva possui os campos aulainicio e aulafim, onde fica armazenado qual a aulainicial e a auala final selecionada, não é criado um registro para cada aual selecionado, o registro é criado por data

 

Exemplo do formulario

 

Imagem Postada

 

Dados armazenados na tabela

Veja os dados do dia 08/06 para melhor entendimento

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que ficará melhor quando registrar, registrar todas as aulas da inicial até a final.

 

Abraços...

Criar um registro para cada aula?

Penso que ficará confuso a visualização depois por parte do professor.

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.