Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá galera. Tem alguma forma de criar uma procedure que insira dados de uma checkbox, tipo, quando vários estão selecionados??
Já procurei aqui e não encontrei e eu não quero fazer no código ASP.
Caso alguém tenha essa ajuda, agradeço desde já.
SOLUCIONADO (temporariamente, pois vou ver se dá pra aprimorar)
CREATE PROCEDURE SP_INSERIR_CADASTRO_DESTINO@des_titulo VARCHAR(100),@reg_id INT,@est_id INT,@cid_id INT,@des_sobre NTEXT,@des_clima NTEXT,@des_como_chegar NTEXT,@des_hospedagem NTEXT,@des_dados_local NTEXT,@des_servicos NTEXT,@des_links NTEXT,@des_atracoes NTEXT,@usu_id INT,@can_id VARCHAR(50),@tiv_id VARCHAR(50)ASDECLARE @valor INTINSERT tab_destino(des_titulo, reg_id, est_id, cid_id, des_sobre, des_clima, des_como_chegar, des_hospedagem, des_dados_local, des_servicos, des_links, des_atracoes, usu_id)VALUES(@des_titulo, @reg_id, @est_id, @cid_id, @des_sobre, @des_clima, @des_como_chegar, @des_hospedagem, @des_dados_local, @des_servicos, @des_links, @des_atracoes, @usu_id)SET @valor = (SELECT SCOPE_IDENTITY() des_id)SET NOCOUNT ON DECLARE @CheckID varchar(10), @Pos int SET @can_id = LTRIM(RTRIM(@can_id))+ ',' SET @Pos = CHARINDEX(',', @can_id, 1) IF REPLACE(@can_id, ',', '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @CheckID = LTRIM(RTRIM(LEFT(@can_id, @Pos - 1))) IF @CheckID <> '' BEGIN INSERT INTO tab_destino_canal (des_id, can_id) VALUES (@valor, @CheckID) END SET @can_id = RIGHT(@can_id, LEN(@can_id) - @Pos) SET @Pos = CHARINDEX(',', @can_id, 1) END END SET @tiv_id = LTRIM(RTRIM(@tiv_id))+ ',' SET @Pos = CHARINDEX(',', @tiv_id, 1) IF REPLACE(@tiv_id, ',', '') <> '' BEGIN WHILE @Pos > 0 BEGIN SET @CheckID = LTRIM(RTRIM(LEFT(@tiv_id, @Pos - 1))) IF @CheckID <> '' BEGIN INSERT INTO tab_destino_tipo_viagem (des_id, tiv_id) VALUES (@valor, @CheckID) END SET @tiv_id = RIGHT(@tiv_id, LEN(@tiv_id) - @Pos) SET @Pos = CHARINDEX(',', @tiv_id, 1) END END RETURN @valor
Pois bem, eu tenho uma tabela principal que tem dois grupos de checkbox, que serão os dados de duas tabelas filhas, tipo, cada destino pode aparecer em vários canais, ou seja, eu teria que criar uma procedure que resgatasse os valores do formulário inteiro e na hora desses checkbox's, ela colocasse os dados deles nas tabelas filhas junto com os ID da tabela principal. O código está aí, caso alguém precise.
****Segue tb o código de inserção da página asp:
****
Dim cmd, valor, a, b, canal, tipo, i, z ' pega os dados das checkbox, tira virgula e agrupa em uma string a = split(request.form("can_id"),",") b = split(request.form("tiv_id"),",") for i=LBound(a) to UBound(a) canal = canal & a(i) Next for z=LBound(b) to UBound(b) tipo = tipo & a(z) Next set cmd = Server.CreateObject("ADODB.Command") With Cmd .ActiveConnection = Conexao .CommandType = adCmdStoredProc .CommandText = "SP_INSERIR_CADASTRO_DESTINO" .Parameters.Append .CreateParameter ( "RETURN_VALUE", adInteger, adParamReturnValue) .Parameters.Append .CreateParameter ( "@des_titulo", adVarChar, adParamInput, 100, request.form("des_titulo")) .Parameters.Append .CreateParameter ( "@reg_id", adInteger, adParamInput, 1, request.form("reg_id")) .Parameters.Append .CreateParameter ( "@est_id", adInteger, adParamInput, 2, request.form("est_id")) .Parameters.Append .CreateParameter ( "@cid_id", adInteger, adParamInput, 5, request.form("cid_id")) .Parameters.Append .CreateParameter ( "@des_sobre", adVarChar, adParamInput, 1000, request.form("des_sobre")) .Parameters.Append .CreateParameter ( "@des_clima", adVarChar, adParamInput, 1000, request.form("des_clima")) .Parameters.Append .CreateParameter ( "@des_como_chegar", adVarChar,adParamInput, 1000, request.form("des_como_chegar")) .Parameters.Append .CreateParameter ( "@des_hospedagem", adVarChar,adParamInput, 1000, request.form("des_hospedagem")) .Parameters.Append .CreateParameter ( "@des_dados_local", adVarChar, adParamInput, 1000, request.form("des_dados_local")) .Parameters.Append .CreateParameter ( "@des_servicos", adVarChar, adParamInput, 1000, request.form("des_servicos")) .Parameters.Append .CreateParameter ( "@des_links", adVarChar, adParamInput, 500, request.form("des_links")) .Parameters.Append .CreateParameter ( "@des_atracoes", adVarChar, adParamInput, 1000, request.form("des_atracoes")) .Parameters.Append .CreateParameter ( "@usu_id", adInteger, adParamInput, , 1 ) .Parameters.Append .CreateParameter ( "@can_id", adVarChar, adParamInput, 50, replace(canal," ",",")) .Parameters.Append .CreateParameter ( "@tiv_id", adVarChar, adParamInput, 50, replace(tipo," ","")) End With Cmd.Execute , , adExecuteNoRecords IF CStr( Cmd.Parameters( "RETURN_VALUE" )) = 0 THEN Response.Write "Success " ELSE Response.redirect("desAltera.asp?id="& CStr( Cmd.Parameters( "RETURN_VALUE" ))) END IF
Ps. aquele tratamento que dou aos dados do checkbox antes deles irem pra procedure foi pq deu um erro que eu não sabia qual que era na hora de mandar os dados pra procedure, logo, eu dei um split nos valores da checkbox, reagrupei ela e substitui os espaços por virgula(não sei pq ficava esse espaço chato :( ) pois bem, acredito que com esse novo código da procedure não precisa disso.
****Abraços a todos e espero que isso ajude alguém.
****
****Fui
****
Carregando comentários...