COMO INSERIR DADOS EM ORDEM DEFINIDA PELO USUARIO?

XLEGENDARY 11/03/2013 14:18:16
#420257
Ola pessoal boa tarde. Estou desenvolvendo uma aplicação vb.net com OleDb
nessa aplicação o cliente precisa ajustar a inserção de clientes dele da forma que ele quiser manilupar.

exemplo: cadastrei 3 clientes
1- joao
2- pedro
3- josé

preciso cadastar um quarto cliente entre joao e pedro ou ainda um quinto cliente entre pedro e josé

alguém tem algum código exemplo pra eu poder me guiar ou ainda a lógica de como ficaria?

obrigado rapaziada :)
ADILSOO 11/03/2013 15:15:07
#420261
Amigo, como assim em ordem? Você cadastrou um cliente com o código

1- joao
2- pedro
3- josé

Mas que que ao inserir um novo cliente, esse [Ô]Novo Cliente[Ô], fique com o código 2? Tenta explicar melhor, ta meio confuso...

OBS: No meu ver, a ordem que é cadastrada no BD não interfere em nada, oque pode mudar é a ordem em que você mostra eles na tela (Relatório), sendo assim você pode ordenar por (A-Z), separar por grupos, e por aí vai, mas não entendi muito bem oque realmente quer fazer, se for possível, mostra o código que você está tendo problemas para o pessoal analisar, até mais, abracos.
JABA 11/03/2013 15:35:23
#420263
Resposta escolhida
Cara, voce pode criar um coluna numerica na tabela de clientes para registrar a ordem.

TabCliente

Id Nome Ordem
1 joao 2
2 pedro 3
3 josé 1

Na hora de fazer a consulta, tu pode fazer assim:

Select * From TabCliente OrderBy Ordem

vai aparecer assim após essa sql:

Id Nome Ordem
3 josé 1
1 joão 2
2 pedro 3

Obs: No form de cadastro, tu pode criar um campo para registrar a ordem manualmente ou então voce pode se basear nos indices dos registros que estão na lista de clientes usando um datagridview por exemplo - Lembre-se que se um registro for inserido no meio, a ordem dos indices muda para todos os registros seguintes - para registrar a posicao de cada cliente.
JABA 11/03/2013 15:42:15
#420264
Outra forma mais interessante é usar o Drag and Drop nos registros do DataGridView para deixar tudo na ordem que pretende. Depois que tiver tudo na ordem desejada, é só pegar os indices de cada registro e gravar no BD.
XLEGENDARY 11/03/2013 21:22:25
#420288
Salve, obrigado pelas respostas
vou ser mais claro



meu select ..


If cmbpesquisa.Text = [Ô][Ô] Then
Beep()
frmmsxboxPESQUISACLIENTE.ShowDialog()

Else

Dim conexao As New OleDbConnection
conexao.ConnectionString = [Ô]Provider=microsoft.ace.oledb.12.0; data source=[Ô] & Application.StartupPath & [Ô]\BDDPIL.accdb[Ô]
Dim sSQL As String = [Ô]Select NOME, TELEFONE, AREA, HORAINICIO, HORAFIM, DATAAGENDAMENTO, AGENDAMENTO, TECNICA From CLIENTES Where DATAAGENDAMENTO = [ô][Ô] & dtpesquisa.Text & [Ô][ô] and AGENDAMENTO = [ô][Ô] & cmbpesquisa.Text & [Ô][ô] or HORAINICIO =[ô][Ô] & dtpesquisar.Text & [Ô][ô] Order By[ô][Ô] & frmcadClientes.dtde.Text & [Ô][ô][Ô]
dsclientes = New DataSet()
daclientes = New OleDbDataAdapter(sSQL, conexao)
daclientes.Fill(dsclientes, [Ô]CLIENTES[Ô])
dtclientes = dsclientes.Tables([Ô]CLIENTES[Ô])
dgvClientes.DataSource = dtclientes
conexao.Close()
ConfigurarGrid()
ColoreGrid()
End If


com esse select eu busco informações do meu frmCadClientes por ordem de horario
porém só funciona nos 2 primeiros registros

1° paciente HORAINICIO = 09:00hrs
2° paciente HORAINICIO = 09:30hrs
3° paciente HORAINICIO = 09:15hrs

o terceiro de paciente as 09:15hrs teria que entrar no lugar do de 09:30hrs e o segundo paciente assumir o lugar do terceiro, ou seja não que os horarios dos pacientes mudariam, mas se der pra encaixar um paciente em um horario disponivél o programa conseguir fazer isso. Nos 2 primeiros registros ele faz, só não entendo o porque ele não continua com o orderby

sera que teria que fazer isso na minha função configurargrid pra entrar sempre no load do frm?

outro problema é saber quais horarios disponiveis tem para fazer os agendamentos

desculpem por tantas duvidas. obrigado pessoal

JABA 11/03/2013 22:48:19
#420289
Coloque o nome da coluna de ordenacao direto como coloquei no final da sql, assim:

Dim sSQL As String = [Ô]Select NOME, TELEFONE, AREA, HORAINICIO, HORAFIM, DATAAGENDAMENTO, AGENDAMENTO, TECNICA From CLIENTES Where DATAAGENDAMENTO = [ô][Ô] & dtpesquisa.Text & [Ô][ô] and AGENDAMENTO = [ô][Ô] & cmbpesquisa.Text & [Ô][ô] or HORAINICIO =[ô][Ô] & dtpesquisar.Text & [Ô][ô] Order By HORAINICIO[Ô]
XLEGENDARY 12/03/2013 18:08:20
#420333
obrigado amigo, o erro era em outro select
do preenchimento do meu gridview

sabe de alguma função que verifique horarios disponiveis?

penso que terei que criar uma tabela desses horarios e fazer um select
JABA 14/03/2013 16:46:28
#420489
Os horarios disponiveis fazem parte de sua regra de negócio e isso ja era pra estar implicito em sua estrutura de banco de dados. Tendo a estrutura feita corretamente, é só fazer consultas necessárias.
Tópico encerrado , respostas não são mais permitidas