VB2008 - Count dá 0

tds

Power Member
Código:
dtAdapt(6) = New OleDbDataAdapter("SELECT MateriaID, ProdutoID, RestricaoID, Valor FROM MatrizCoeficientes WHERE MatrizCoeficientes.ProdutoID=(SELECT ProdutoID FROM Produtos WHERE Nome='" & nomeProduto & "')", dbConn)
                dtAdapt(6).Fill(dtSet, "tabelaGrid")
                dtAdapt2(4) = New OleDbDataAdapter("SELECT Custos FROM MateriasProdutos WHERE ProdutoID=(SELECT ProdutoID FROM Produtos WHERE Nome='" & nomeProduto & "')", dbConn)
                dtAdapt2(4).Fill(dtSet2, "MateriasProdutos")

Numa coisinha destas, porque haverá o count do "tabelaGrid" dar 0? D:

É que este código tá a dar para uns produtos epara outros nao D:

Não percebo =z
 
Experimenta com algo do género:

Código:
SELECT MateriaID, ProdutoID, RestricaoID, Valor FROM (MatrizCoeficientes LEFT JOIN Produtos on MatrizCoeficientes.ProdutoId = Produtos.ProdutoId) WHERE Produtos.Nome='" & nomeProduto & "';"
 
Basicamente obter dados com strings nunca é uma boa opcção, porque "Teste" já é diferente de "Teste " e na base de dados, basta um espaço ou algo a mais sem querer e o valor já não é encontrado.

Das duas uma, ou tratas a string antes para teres a certeza que o valor vai como deve de ser, ou quando puxas pela primeira vez o nome, trazes logo o ID e deixas o ID em cache para mais tarde já o teres e não te dar erros desses.
 
Hm... Neste caso, por favor, apaguem-me este tópico, pq o problema é mesmo não haver registos na base de dados para outros Produtos D: Só hoje é que me apercebi que a base de dados estava incompleta D:

Mesmo assim, obrigado pela ajuda e prontidão! =D

Estou a trabalhar com strings porque é a unica maneira que conheço para tal D:

Como é que eu poderia guardar o ID em cache?
 
Uma forma é:

Quando vais a base de dados buscar os dados puxas o nome e o id dos produtos/items/whatever.

Após obter os dados, antes de os meteres onde quer que os tens que meter, crias uma ArrayList ou uma List(Of) ou um Dictionary(of,of) e preenches as listas com os dados.

Se guardares essa lista num modulo por exemplo, enquanto não for alterada e enquanto o programa se manter aberto tens acesso a lista, mas tens que ter atenção a detalhes como por exemplo, sempre que se alterar um objecto na base de dados, tens que actualizar a lista, sempre que se eliminar um objecto na base de dados tens que actualizar a lista, etc..
 
Back
Topo