PROBLEMAS COM RECORD SOURCE

DAVYS 19/12/2006 09:46:21
#190808
Olá pessoal, seguinte estou com um problemaum com 1 formulario aki

é uma tela de cadastro de produto, no momento do cadastro existe alguns campos que utilizaum ComboBox com dados Cadastraveis, por exemplo Representante, existe um cadastro externo de representante que no momento do cadastro do produto carregaum todos os representante no combo, até ai tudo bem faço o cadastro tudo certinho só que quando eu abro em modo alteração tenho que fazer um select com inner join correto? para poder relacionar o ID do representante com a tabela de Representante para no momento da vizualização não aparecer apenas o codigo do representante ai ok fiz o inner join ele mostra tudo bonitinho os dados na tela só que se eu por acaso der um salvar alteração ele da pau "Item não Encontrado nesta coleção" e Isso ocorre no momento q o sistema tenta jogar o ID do Fornecedor para o recordset.

IXI muito confuso né pessoal q merda to me matando pra resolver essa parada e nada ta embssado hehe mas entaum olha só mis ou menos a estrutura q estou usando


With Data1.Recordset
If ActionLocal = dbEditAdd Then
.AddNew
Else
.Edit
End If
!n = IIf(txtn.Text = "", Null, txtn.Text)
!lacre = txtlacre.Text
!data_entrada = IIf(txtdata_entrada.Text = "", Null, txtdata_entrada.FormattedText)
!data_saida = IIf(txtdata_saida.Text = "", Null, txtdata_saida.FormattedText)
!representante = cboRepresentante.ItemData(cboRepresentante.ListIndex) <ERRO BEM AKIIIIIIIIIIIIIIIIIIIIII
!cliente = cboCliente.ItemData(cboCliente.ListIndex)
!PRODUTO = IIf(txtproduto.Text = "", "-", txtproduto.Text)
!tecido = IIf(txttecido.Text = "", "-", txttecido.Text)
!peso = IIf(txtpeso.Text = "", "-", txtpeso.Text)
!custo = IIf(txtcusto.Text = "", Null, txtcusto.Text)
!preco = IIf(txtpreco.Text = "", Null, txtpreco.Text)
!data_aprovacao = IIf(txtdata_aprovacao.Text = "", Null, txtdata_aprovacao.FormattedText)
!prazo_entrega = IIf(txtprazo_entrega.Text = "", Null, txtprazo_entrega.FormattedText)
!preco_aprovado = IIf(txtpreco_aprovado.Text = "", Null, txtpreco_aprovado.Text)
!obs = IIf(txtobs.Text = "", "", txtobs.Text)

.update

esta vendo esse é o meu codigo para atualiza, o q está acontecendo é o seguinte quando eu abro em modo alteração com o select usando inner join no campo !representante que é onde armazena o ID parece ser ignorado ele gera aprenas o campo ![representante.representante] que é o campo relacionado q vem com o nome do representante

Pow pessoal ta muito complicado de explicar espero q consigaum ententer e ter paciencia de ler tudo isso pq escrevi bastante heheh vlw pessoa
USUARIO.EXCLUIDOS 19/12/2006 10:38:11
#190820
Olá Davys,

Eu tenho um caso semelhante ao seu, mostrar o nome do vendedor mas gravar o ID do vendedor. Eu resolvi da seguinte maneira,

Quando eu seleciono o vendedor na combo, eu faço uma rotina que armazena numa variável o código deste vendedor e no momento que gravo o registro eu coloco na linha do campo o conteúdo dessa variável.

Espero poder tê-lo ajudado.


USUARIO.EXCLUIDOS 19/12/2006 10:43:59
#190824
O erro "Item não encontrado nessa coleção" se dá quando não há o nome do campo. Parece-me que na sua tabela não existe o campo REPRESENTANTE. Como vc está fazendo um INNER JOIN, minha sugestão é colocar um ALIAS no seu seu campo, tipo:



Select Produtos.*, Representante.Representante AS 'ID_Representante' from produtos INNER JOIN Representante ON ...



E no seu update:



!lacre = txtlacre.Text
!data_entrada = IIf(txtdata_entrada.Text = "", Null, txtdata_entrada.FormattedText)
!data_saida = IIf(txtdata_saida.Text = "", Null, txtdata_saida.FormattedText)
!ID_Representante = cboRepresentante.ItemData(cboRepresentante.ListIndex)
!cliente = cboCliente.ItemData(cboCliente.ListIndex)
!PRODUTO = IIf(txtproduto.Text = "", "-", txtproduto.Text)




Acho que isso resolverá!
USUARIO.EXCLUIDOS 19/12/2006 10:44:13
#190826
Davys,

O que acontece é o seguinte, você tem um DataSource referenciando duas tabelas distintas e isso as vezes ocasiona erro mesmo. Eu aconselharia a você realizar este insert via clausula SQL, com uma conexão ADO, é bem melhor usar ADO do que os objetos.

Espero que te ajude.
DAVYS 20/12/2006 11:57:27
#191153
Poutz pessoal vlw mexi mexi mexi e acabei consertando, agora só naum me pergunte o q eu fiz q naum tenho ideia fiz tanta coisa hehehehhe q acabei me perdendo naum sei nem como funcionou hUAhAUh Melhor nem mexer mais heheheh


vlw pessoal, mas eu naum usei ADO naum foi pelo proprio objeto data
Tópico encerrado , respostas não são mais permitidas