Jump to content

Fotografias e combox com valor correcto no alterar


Etiqueta

Recommended Posts

Bom dia,

Estou a desenvolver um programa em C# com resurso a datasets.

Fiz um guardar e está a funcionar correctamente. Agora fiz um alterar, está a agarrar em todos os valores menos nos da combobox.

O que se sucede é que a combobox aparece com o número que ficou na base de dados e quando expando a combobox os resultados estão escritos, por exemplo, usado, novo, remodelado, é esse o resultado pretendido.

Ou seja, em vez de aparecer o número queria que aparece-se mesmo o nome do campo da tabela associada.

Nesse formulário de guardar são inseridas também fotografias que estão a guardar o caminho na base de dados correctamente, quando faço o alterar não aparece imagem nenhuma nas picturebox.

Podem ajudar-me nestes dois problemas sff?

Obrigada desde já pela atenção.

Edited by Etiqueta
Link to comment
Share on other sites

o problema das combobox já stá resolvido.

Coloquei:

DataSource: TabelaAssociadaBindingSource

DisplayMember: CampoTabelaAssociada

ValueMember: Id_TabelaAssociada

SelectedValue: TabelaPrincipalBindingSource - Id_Correspondente

Só falta resolver o problema das fotografias.

Alguma ajuda?

Link to comment
Share on other sites

não dá erro mas não apresenta a imagem.

tenho o código assim neste momento:

string caminhoFoto1 = @"Fotografias/" + DataSet.Tables["NomeTabela"].Columns["Foto1"].ToString();
foto1PictureBox.ImageLocation = caminhoFoto1;
Edited by Etiqueta
Link to comment
Share on other sites

Isto:

DataSet.Tables["NomeTabela"].Columns["Foto1"].ToString()

Não te dá o valor que pretendes.

Tens que aceder a uma linha da tabela e ver o valor da coluna que pretendes. Desta forma:

DataSet.Tables["NomeTabela"].Rows[0]["Foto1"].ToString()

Usei a linha 0 apenas como exemplo, estou a supôr que quando executas este código o teu DataSet está correctamente preenchido e portanto terás pelo menos uma linha nessa tabela...

Link to comment
Share on other sites

sim fiz, tenho assim:

string caminhoFoto1 = @"Fotografias/" + DataSet.Tables["NomeTabela"].Rows[0]["Foto1"].ToString();
foto1PictureBox.ImageLocation = caminhoFoto1;

já consegui. muito obrigada

foto1PictureBox.ImageLocation = DataSet.Tables["NomeTabela"].Rows[0]["Foto1"].ToString();

Aparece a imagem mas essa mantém para todos os registo e não era isto que queria.

Pretendia que cada registo apresenta-se as suas fotos que estão guardadas na base de dados

Edited by Etiqueta
Link to comment
Share on other sites

estou a fazer assim:

int i;
for (i = 0; i<= DataSet.Tables["NomeTabela"].Rows.Count; i++)
{
  foto1PictureBox.ImageLocation = DataSet.Tables["NomeTabela"].Rows[i]["Foto1"].ToString();
}

mas é apresentado um erro:

"Não existe linha na posição 2."

na base de dados tenho um id 1 e 3

Link to comment
Share on other sites

Não percebi...

Tens uma única pictureBox ou tens várias? A PictureBox está numa grelha ou algo parecido?

É um form com uma única PictureBox e deve aparecer a imagem do registo que está a ser consultado é isso? Se é esta diria que o teu DataSet só deveria ter esse registo.

Se tens od dados de todos os registos no DataSet tens que filtrar o DataSet para te dar uma única linha com a informação respeitante ao registo que queres. Para isso podes usar a instrução Select da DataTable. Algo assim: DataSet.Tables["NomeTabela"].Select("id = whatever")[0]

Link to comment
Share on other sites

É um form com uma única PictureBox e deve aparecer a imagem do registo que está a ser consultado é isso?

sim é isso

tenho assim:

for (i = 1; i < DataSet.Tables["NomeTabela"].Rows.Count; i++)
{
 foto1PictureBox.ImageLocation = DataSet.Tables["NomeTabela".Select("Id = [i]").ToString();
}

aparentemente não apresenta erro, mas quando corro o programa, surge um erro:

"Não é possível localizar a coluna ."

Link to comment
Share on other sites

Mas qual é o id do registo que estás a consultar? Não é o i de certeza. Deves ter isso quando abres o form correcto?

É esse Id que terás de usar no select. Portanto esquece o ciclo que parece-me não precisas dele. E o uso do select está errado. O que colocas como argumento do select será uma igualdade do nome da coluna onde tens o Id com o valor que pretendes. Coloquei como exemplo o nome da coluna Id, não sei qual o nome de tens na tua DataTable.

int idDoRegisto = idDoRegistoQueEstouaConsultar
foto1PictureBox.ImageLocation = DataSet.Tables["NomeTabela"].Select("Id = " + idDoRegisto).ToString();
Link to comment
Share on other sites

esse id que pretendo é diferente quando o utilizador clica na barra do bindingNavigatorPositionItem.

como é que sei qual é o id que ele está a ver? é aí a minha dificuldade.

eu tenho um form com a picturebox e usse bindingNavigator. Quando o utilizador vê os restantes registos, a imagem dentro da picturebox tem k alterar consoante o caminho que está guardado na base de dados.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.