Array
(
)

Navegar pelos registros

Jair Souza
   - 22 dez 2014

Preciso fazer três ajustes neste form, mas não estou conseguindo...agradeço se alguém puder ajudar :
*Windows form e BD Access.
- O campo hora que carrega pelo botão adicionar do bindingnavigator com o código abaixo :
Depois de salvar fica a data mais a hora, mas tem de ser somente a hora, o que deve estar errado ?
No banco está correto, somente a hora.
#Código

horaTextBox.Text = DateTime.Now.ToShortTimeString();

- Quando se clica no botão adicionar será adicionado nova locação, é necessário limpar o grid para que se possa incluir novos itens, como fazer isto ?
Fiz com o código abaixo, mas apaga do banco também...
#Código
while (itemLocacaoDataGridView.Rows.Count > 0)
{
itemLocacaoDataGridView.Rows.Remove(itemLocacaoDataGridView.CurrentRow);
}

-E por último, quando se clicar nas setas do bindingnavigator para navegar pelos registros, que mude também os itens no grid.
Estando na locação 1 mostrar os livros da locação 1, quando mudar para locação 2, mostrar os livros da locação 2 e assim por diante.

Clique na imagem para abrir em uma nova janela

Joel Rodrigues
   - 23 dez 2014

Vamos lá.
Questão 1:
Como está o tipo de dados no banco?
Tem algum código extra no botão de salvar?
Questão 2:
Tente isso:
#Código

itemLocacaoDataGridView.DataSource = null;

Questão 3:
No evento CurrentChanged do BindingSource das locações, você precisa preencher o grid dos itens de acordo com o registro atual.

0
|
0

Jair Souza
   - 24 dez 2014

Questão 1 :
Clique na imagem para abrir em uma nova janela

Questão 2 : Funcionou assim :

#Código

 bDBibliotecaDataSet.ItemLocacao.Clear();


Questão 3 :
Não sei como fazer, podes detalhar ?

0
|
0

Jair Souza
   - 01 jan 2015

Olá, tens mais alguma dica ?

0
|
0

Joel Rodrigues
   - 02 jan 2015

Sobre a questão 3, trate o evento CurrentChanged do binding source da locação, como eu falei, vai ser algo mais ou menos assim
#Código

if(locacaoBindingSource.Current != null)
{
   DataRowView row = locacaoBindingSource.Current as DataRowView;
   itemLocacaoTableAdapter.Fill(dataSet.itemLocacaoTable, row["CodLocacao"].ToString())
}


Obviamente não é pra copiar este código, mas sim pegar a ideia.

0
|
0

Jair Souza
   - 02 jan 2015

Tentei ajustar, mas não estou conseguindo acertar....

Clique na imagem para abrir em uma nova janela

0
|
0

Joel Rodrigues
   - 05 jan 2015

Dessa forma que está aí eu não consegui identificar qual é o erro exatamente. Aparentemente esse método FillByLocacoesPendentes não existe, tem certeza que é esse Fill que você usa?

0
|
0

Jair Souza
   - 05 jan 2015

Este método é válido e é usado em outra parte do código.
Veja abaixo como está agora...:

Clique na imagem para abrir em uma nova janela

0
|
0

Joel Rodrigues
   - 07 jan 2015

E qual foi o problema ao utilizá-lo?
Nesta imagem aí o erro é que não tem esse ponto, como mostrei no exemplo: row["IDLocacao"].ToString().

0
|
0

Jair Souza
   - 07 jan 2015

Então...sem o ponto que realmente não faz sentido, dá o erro da imagem anterior, já tentei vários ajustes, mas nada funciona...

0
|
0

Jair Souza
   - 07 jan 2015

Deixei o fill nativo, Agora está dando este erro, mas não sei o que significa...

Clique na imagem para abrir em uma nova janela

0
|
0

Jair Souza
   - 12 jan 2015

Bom dia, pessoal, alguma dica para este aprendiz ?

0
|
0

Joel Rodrigues
   - 12 jan 2015

Você testou apenas corrigir o erro que falei e usar o FillByLocacoesPendentes?
O erro aí é bastante claro: não existe um método Fill que receba 2 argumentos.

0
|
0

Jair Souza
   - 12 jan 2015

Corrigi o erro que falaste Retirando o ponto e voltei ao FillByLocacoesPendentes e dá este erro :

Clique na imagem para abrir em uma nova janela

0
|
0

Joel Rodrigues
   - 12 jan 2015

Aí diz que o método não existe.
Você consegue pelo menos identificar quais métodos existem, e quais argumentos eles esperam?

0
|
0

Jair Souza
   - 13 jan 2015

Este existe e está funcionando na querybuilder :

Clique na imagem para abrir em uma nova janela

E também aparece nas opções no código :

Clique na imagem para abrir em uma nova janela

0
|
0

Jair Souza
   - 15 jan 2015

Pessoal, já excedi meu conhecimento....rrrrs, se alguém puder ajudar, agradeço muito.

0
|
0

Joel Rodrigues
   - 15 jan 2015

Cara, seu problema é com a compreensão desses métodos Fill. Você vai precisar dar uma pesquisada pra entender como eles funcionam e como passar parâmetros para um método, pois vejo que você está com dificuldade de entender os argumentos esperados pelo método.

Por exemplo, esse FillByLocacoesPendentes não recebe nenhum filtro, ele recebe apenas a tabela que vai ser preenchida. Você vai precisar, neste caso, de um Fill que receba, além da tabela, o ID/Código da locação, para retornar os itens dela. Algo do tipo: FillByLocacao(dataTable, 10); que preencheria os itens da locação 10.

0
|
0

Jair Souza
   - 09 fev 2015

Finalmente consegui ficou assim :

Criei uma query FillIBytensLocados :

#Código

SELECT        ItemLocacao.IDItem, ItemLocacao.IDLocacao, ItemLocacao.IDLivro, ItemLocacao.IDLocatario, ItemLocacao.IDFuncionario, ItemLocacao.[Data de Devolucao], 
                         ItemLocacao.Obs1, ItemLocacao.Obs2, ItemLocacao.Obs3

FROM            ((ItemLocacao INNER JOIN Locacao ON Locacao.IDLocacao = ItemLocacao.IDLocacao) 
                         INNER JOIN Locatario ON Locatario.IDLocatario = Locacao.IDLocatario)

WHERE        (Locatario.IDLocatario = ?) AND (ItemLocacao.[Data de Devolucao] IS NULL)


E chamo nos clicks dos botões de navegação do form :

#Código
private void BtnPrimeiro_Click(object sender, EventArgs e)
        {
            this.itemLocacaoTableAdapter.FillByIDLocatario(this.bDBibliotecaDataSet.ItemLocacao,Convert.ToInt32(iDLocatarioTextBox.Text));
        }


Aqui está buscando pelo ID do Locatário, em outro form coloquei para chamar pelo ID da locação :

#Código
SELECT        ItemLocacao.IDItem, ItemLocacao.IDLocacao, ItemLocacao.IDLivro, ItemLocacao.IDLocatario, ItemLocacao.IDFuncionario, ItemLocacao.[Data de Devolucao], 
                         ItemLocacao.Obs1, ItemLocacao.Obs2, ItemLocacao.Obs3
FROM            ((ItemLocacao INNER JOIN
                         Locacao ON Locacao.IDLocacao = ItemLocacao.IDLocacao) INNER JOIN
                         Locatario ON Locatario.IDLocatario = Locacao.IDLocatario)
WHERE        (Locacao.IDLocacao = ?) AND (ItemLocacao.[Data de Devolucao] IS NULL)


Valeu !

0
|
0