Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos...
Estou com um projeto que, aparentemente, era simples e acabou se tornando uma dor de cabeça, que confesso está tirando o meu sono. Mas tenho certeza que com a ajuda de vocês seja possível resolvê-lo.
Vamos ao que interessa:
Segue uma estrutura de banco de dados como exemplo:
-
Tabelas (tbl_Cliente, tbl_Marcas)
-
tbl_Cliente: id (auto-numeração), Nome (texto), MarcasAtivas (texto longo).
-
tbl_Marcas: id (auto-numeração), Marca (texto).
Na página de inserção dos Dados segue o seguinte:
tbl_Marcas
ID
MARCAS
1
Volks
2
Ford
3
Chevrolet
4
Volvo
5
Fiat
tbl_Clientes
ID
CLIENTE
MARCASATIVAS
1
Teste1
1,3,5
2
Teste2
2,4
Agora vem o problema!
Preciso exibir todos as Marcas da tbl_Marcas e checkeed as marcas selecionada na tbl_Cliente.
Exemplo para o cliente Teste1:
Id: 1
Cliente: Teste1
MarcasAtivas:
×
Volks
Ford
×
Chevrolet
Volvo
×
Fiat
Segue o código que estou usando até o momento:
<%
if rsClientes("MarcasAtivas") <> "" then
Dim texto, arrayTexto, i
Dim rs, sql, conexao
texto = (rsClientes.Fields.Item("MarcasAtivas").Value)
arrayTexto = Split(texto,",")
set conexao = server.CreateObject("adodb.connection")
set rs = server.CreateObject("adodb.recordset")
localbd = MM_cnSystemBackstage_STRING
conexao.open localbd
For i = 0 to Ubound(arrayTexto)
sql = "select id, MarcaAtivas from tbl_Marcas where id = "&arrayTexto(i)&""
rs.open(sql), conexao
Fabrica = rs("Fabrica")
response.Write("<input type='checkbox' name='txt_MarcasInternas' id="&arrayTexto(i)&" checked disabled='disabled'><label for="&arrayTexto(i)&"> "&Fabrica&"<br></label>")
rs.close()
next
end if
conexao.close()
set conexao = nothing
%>
Da forma descrita acima, só exibe as marcas selecionadas e não todas as marcas juntas.
Me ajude aí... please!
Obrigado!
Bom dia Gustavo!
Eu quero que apareça todas as marcas e que as marcas utilizadas pelo cliente esteja checadas.
Obrigado.
>
Em 14/03/2018 at 18:15, Gustavo Emygdio Barboza disse:
Olá a modelagem do banco não está adequada o ideal seria ter uma tabela intermediária entre clientes e marcas... fazendo um muitos-para-muitos... mas da para resolver ... mas você quer montar um combo com as marcas ativas e por cliente ? seria por AJAX?
Boa noite amigos!
Resolvi desta forma:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="Connections/cnSystemBackstage.asp" -->
<%
Dim conexao, rsClientes, rsMarcas, localbd, sqlClientes, sqlMarcas
Set conexao = Server.CreateObject ("ADODB.Connection")
Set rsClientes = Server.CreateObject ("ADODB.RecordSet")
Set rsMarcas = Server.CreateObject ("ADODB.RecordSet")
localbd = MM_cnSystemBackstage_STRING
Conexao.open localbd
sqlClientes = "Select *from tbl_Clientes"
sqlMarcas = "Select *from tbl_Marcas"
rsClientes.open(sqlClientes), conexao
rsMarcas.open(sqlMarcas), conexao
if rsClientes("MarcasAtivas") <> "" then
While NOT rsMarcas.EOF
Dim texto, arrayTexto, i, x, id_marca
texto = rsClientes("MarcasAtivas")
arrayTexto = Split(texto,",")
x=0
For i = 0 to Ubound(arrayTexto)
id_Marca = arrayTexto(i)
id_Marca = int(id_Marca)
if rsMarca("id") = id_Marca then
response.Write("<input type='checkbox' name='txt_Marcas' id='txt_Marcas' checked='checked' /><label for='txt_Marcas'> Marca = "&rsMarca("Fabrica")&"</p>")
x=x+1
end if
next
if x=0 then
response.Write("<input type='checkbox' name='txt_Marcas' id='txt_Marcas' /><label for='txt_Marcas'> Marca = "&rsMarca("Fabrica")&"</p>")
end if
rsMarca.MoveNext()
wend
rsClientes.close()
set rsClientes = nothing
rsMarcas.close()
set rsMarcas = nothing
conexao.close()
set conexao = nothing
%>
foi mais simples que imaginei ... mas é isso ai... trabalhar com asp tem que ser criativo... rs... já o .NET tem recurso para tudo que acaba nos moldando fazendo agente seguir a mesma reta... o problema do ASP clássico é pegar projetos de outros para continuar... pois o estilo desenvolvimento pode mudar muito...
Olá a modelagem do banco não está adequada o ideal seria ter uma tabela intermediária entre clientes e marcas... fazendo um muitos-para-muitos... mas da para resolver ... mas você quer montar um combo com as marcas ativas e por cliente ? seria por AJAX?