Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cesão

[Resolvido] Registros separados por vírgulas

Recommended Posts

Olá amigos, gostaria que alguem me mostrasse a logica de programação que vou ter que usar para o seguinte caso:

 

tenho um campo de texto onde vou colocar diversos itens separados por virgula (exemplo: pão, leite, açúcar, manteiga)...

Daí eu gostaria que na hora de inserir, ele inserisse cada um desses itens em um registro diferente (como faço isso?)...

 

daí na hora de editar eu vou dar um SELECT nesses registros, separando-os por virgula... (essa parte eu sei fazer)...

 

Mas como vou fazer p manter os registros que ja existem, adicionar os novos e excluir os que eu retirar da lista?

Vamos dizer que depois que eu dei o select nos registros eu os deixei assim: pão, leite, açúcar (ou seja, retirei um item), como fazer para ele apenas manter esses ja existentes e excluir o registro retirado da lista?

e mesma coisa no caso de eu adicionar um item: pão, leite, açúcar, café (ou seja, retirei um item e adicionei outro).. como fazer para manter os ja existentes, excluir o que retirei da lista e inserir o que adicionei a lista?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Inserir:

strSQL = "INSERT nome_tabela SELECT nom_coluna FROM nome_tabela WHERE nome_coluna NOT IN ("&request ("nome_input")&")"

Delete:

strSQL = "Delete from nome_tabela WHERE nome_coluna not in (" & request("nome_textarea") & ")"

Update:

Pra fazer o update você usa a lógica do insert e delete:

Primeiro você exclui todo mundo da tabela que nao veio na lista, depois faz o insert de todo mundo que ta na lista mas que não está na tabela.

 

OBS: Eu acho que se for trabalhar com IN e string você deve usar aspas simples antes dos parênteses, ou nas strings. Se for trabalhar com números, não precisa. Dá uma pesquisada.

String e Números

Ex1: IN ('cafe','açúcar','sal')

Ex2: IN (1,6,7,2)

 

Eu faço isso e funfa...

Qualquer coisa posta aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dataset, entendi a lógica, mas tenho algumas dúvidas...

você nao me explicou como fazer pra separar os registros na hora de inserir.. como retirar as virgulas e separar cada registro...

 

E mais..

 

como fazer para inserir ou deletar vários itens ao mesmo tempo?

e tipo, não consegui entender como vai funcionar esse INSERT que você escreveu ai em cima... ele nao eh INSERT INTO? parece ter algumas falhas... e esse select que você faz dentro dele, nao deveria estar no WHERE do INSERT?? eu entendi a logica, mas me confundi com a montagem desse select... ele está correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não, não testei pq acho que está errado não está?

o insert dele nao possui o into e nao entendi o que aquele select faz no meio e talz.. nao consegui adaptar aquilo pro meu codigo...

 

gostaria de saber como fazer para ele retirar as virgulas, separar os itens e inserir os registros separadamente (inserir apenas os que nao existem ainda) e quando ele retirar algum, deletar esse registro... e ele nao me explicou tbm como vou seprara os registros 1 por 1 que estao separados por virgula no formulário

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, tem essa opção de inserir atualizando, como o colega disse acima os itens se forem string devem estar dentro de aspas simples.

 

Vamos supor que la no nosso banco ja temos o cadastro de pure,uva, jaca,graviola

No campo selecionei apenas pure e acrescentei chocolate e azeitona, então quero que suma todos os campos que nao selecionei, para isso usei o delete com not in. Depois quero que todos os dados novos sejam adicionados, mas nao quero que duplique dados, ate mesmo pq utilizo unique key, então usarei replace pra se caso houver ja o registro ele sobreescreve e resolve o nosso problema ;)

 

Segue o codigo:

 

'TEXTO RECUPERADO

texto = "'pure','chocolate','azeitona'"

 

'PARA DELETAR OS INDESEJADOS

conn.execute("Delete from produtos where produto not in ("&texto&")")

 

'AQUI VOU SEPARAR OS ITENS POR VIRGULA, COMO você PEDIU

campo = Split(texto,",")

 

'E VOU FAZER UM LOOP DENTRO DESSA ARRAY PARA ADICIONAR OS ITENS

For I=0 to Ubound(campo)

conn.execute("replace into produtos (produto) Values ("&campo(I)&")")

Next

 

Prontim, espero ter ajudado nesse meu primeiro post http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí pessoal.. acabei fazendo de outra forma...

primeiro eu deleto todos os registros relacionados àquele usuário e depois adiciono os que ele acabou de colocar...

pode não ser a maneira mais prática, mas funcionou... hehehe

 

Página de ações:

Set DB = Server.CreateObject("ADODB.Connection")
DB.Open Conn

txtTags = Request.Form("txtTags")

DB.BeginTrans

SQL = "DELETE FROM TBL_USUARIOS_TAGS WHERE ID_USUARIO=" & var_idUser
DB.Execute SQL

For Each txtTagss in Split(txtTags, ",")
	SQL = "INSERT INTO TBL_USUARIOS_TAGS(ID_USUARIO, TXT_TAG) VALUES(" & var_idUser & ", '" & Lcase(trim(txtTagss)) & "')"
	DB.Execute SQL
Next

DB.CommitTrans

Response.Redirect "frameaction.asp"

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.