Ir para conteúdo

POWERED BY:

Arquivado

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

kania

Select diferente

Recommended Posts

Olá pessoal, gente me deram um tarefa aqui na empresa bem diferente do que eu to acontumado, por isso estou recorrendo aos universitarios, para ver se alguém já fez algo parecido para me ajudar.

 

Vamos ver s eocnsigo explicar.

 

o bando de cadastro de clientes tewra que ter algumas informações específicas e é isto que esta me confundindo.

 

teremos

 

IDCliente

IDIndicador (quem indicou o cliente, só pode ser alguém que já seja cliente da empresa)

IDAscendente (aqui eu to me perdendo)

 

a montagem do banco fui eu quem fiz seguindo as informações que foram solicitadas aqui na empresa.

 

Bom é assim:

 

O sistema tem que dividir os clientes em 2 grupos, que estou chamando de GRUPO ESQUERDO e GRUPO DIREITO, isto porque a empresa quer que eu coloque os cliente em um sistema de Árvore, tipo Binário, um abaixo do outro.

 

Um cliente vai se cadastrar no site da empresa, para ele se cadastrar ele tem que ter um outro cliente que esta indicando ele, e tem que escolher em que grupo ele quer se cadastrar, ESQUERDO OU DIREITO, até aqui tudo beleza, o problema meu esta em que vamos imaginar algumas situações que estou pegando na hora de montar as regras.

 

vamos imaginar uma relação de clientes:

 

IDCLIENTE | IDINDICADOR | IDASCENDENTE | GRUPO

------------------------------------------------------------------------

1 1 1 D (este cliente será a própria empresa que por ela iniciará toda a rede)

2 1 1 E

3 1 1 D

4 2 2 D

5 4 4 D

6 2 5 D (aqui eu tenho um problema, pois não consigo pegar qual é o ascendente na rede)

7 3 3 E

-------------------------------------------------------------------------

 

Se montarmos esta sequencia em uma forma gráfica em 2 grupos esquerdo e direito veremos uma arvore em um sistema binário, vejam, até onde chegue.

 

IdIndicador =  Session("IdIndicador")
Grupo = Session("Grupo")

'PRIMEIRO PRECISO VERIFICAR QUL O UTIMO ID CADASTRADO NA PERNA ESCOLHIDA
'DO PATROCINADOR PARA TER O ID DO ASCENDENTE

	Set RsAs = Server.CreateObject("adodb.recordset")
	SQL = "select max(IdCliente) as IdCliente from cad_cliente where IdIndicador = '" & IdIndicador & "' and Grupo = '"&Grupo&"'"
	RsAs.Open SQL,Conn,3,3
	
	If IsNull(RsAs("IdCliente")) then
		IdAscendente = IdIndicador
		
	else
		IdAscendente = RsAs("IdCliente")
	
	RsAs.Close
	Set RsAs = Nothing
	End If

  • Bom primeiro ey gravo as variaveis de quem esta indicando e em que grupo este novo cadastro deve ser colocado (Direito ou Esquerdo)
  • Depois verifico no BD o utimo cadastro efetuado dentro daquele grupo o INDICADOR seja igual ao Indicador escolhido pelo novo cliente e que este utimo registro esteja dentro do mesmo Grupo (esquerdo ou Direito)
  • Depois vejo se caso seja o primeiro cadastro deste Indicador ele vai defenir o IdAscendente sendo o prórpio IdIndicador
  • Se o Indicador ja tiver algum indicado no respectivo grupo, então eu devo pegar como IdAscendente o Utimo IDAscendente cadastrado neste grupo

Bom tudo estava funcionando certinho até que eu fiz o seguinte teste.

Peguei um Indicador que já possuia 3 cadastros um abaixo do outro dentro do mesmo grupo, quando fiz o teste de cadastro em vez dele pegar o IdAscendente sendo o utimo Di cadastrado dentro do grupo, ele colocou como IDAscendente o Próprio IdIndicador, porque este Indicador ainda não tinha ninguém cadastrado diretamente.

 

esta situação pelo que entendi, eles chama de DERRAMAMENTO, que é quando o cliente esta cadastrado, e ja tem abaixo dele seja no grupo dirieto ou esquerdo varios outros cadastros que não foram efetuados por ele mesmo, sendo assim qu8ando ele ou outra cliente efetuar um novo cadastro este deve sempre entrar na utima posição do grupo, tendo como IDAscendete o ID do grupo cadastrado.

 

Sei que é muito complicado de entender, mas será que alguém consegue em auxiliar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi.

 

Quais serão os relacionamentos? quais vículos? está muito subjetivo.

 

Sugiro que deixe de lado as questões técnicas e pense no primeiro passo (levantamento de dados).

 

Que resultado você quer chegar? quais as excessões? Acho que dá pra te ajudar mas precisa de mais clareza.

 

Por exemplo! você colocou um dado como sendo (1 1 1 D) o início dos dados com a própria empresa, mas você esqueceu que a empresa também deve começar no grupo E ou seja, (1 1 1 E).

 

Pra isso bastaria criar possibilidades e um simples teste de mesa pode resolver seu problema, inclusive acho que fica mais fácil pensar em mudar algumas posições como INDICADOR e GRUPO primeiro.

 

1 D 1 1

1 D 2 1

1 D 2 n

1 D 3 1

1 D n n

n D n n

 

1 E 1 1

1 E 2 1

1 E 2 n

1 E 3 1

1 E n n

n E n n

 

ou GRUPO e INDICADOR primeiro.

 

D 1 1 1

D 1 2 1

D 1 2 n

D 1 3 1

D 1 n n

D 1 n n

D n n n

 

E 1 1 1

E 1 2 1

E 1 2 n

E 1 3 1

E 1 n n

E 1 n n

E n n n

 

Na minha opinião até se entende melhor visualmente.

 

Existem inúmeras possibilidades concorda?

 

Por isso ficaria mais fácil de entender se você disser quais as excessões.

 

Valewww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Alex, obrigado por responder ao meu tópico.

Vamos lá vou tentar te explicar como funciona esta rotina, eu também levei um tempo para entender exatamente o que a empresa queria.

 

para facilitar vou colocar uma iamgem explicativa.

 

Imagem Postada

 

Meu primeiro problema encontrado já na hora de cadastrar.

Preciso pegar e dar um select na tabela para pegar o utimo registro cadastrado dependendo do lado que foi feito oc adastro, sendo que as pernas internas não podem entrar na consulta, ai fiz assim:

 

SELECT MAX(IdConsultor) as IdConsultor FROM cad_consultor WHERE IdPatrocinador = 1 and PERNACADASTRO = 'E'

Porem a consulta não esta trazendo o ID que realmente eu preciso como referencia para cadastrar o novo cliente, deixa eu ver se consigo explicar usando a imagem acima

 

com esta imagem consigo demonstrar bem um erro que esotu tendo, iamginemos que o ID:1 primeiro do topo resolva cadastrar alguém do seu lado esquerdo, este deveria cair abaixo do ID:8 (8.5.5) e sua identificação ficaria (12.1.8) 12 seu ID, 1 seu patrocinador, 8 seu Ascendente, para tentar pegar o ID do ascendente que estou tentando utilizar o MAX mas ou eu estou fazendo a consulta de forma errada ou não é com MAX que se faz ou ainda eu precise colocar no banco alguma informação para que a consulta entenda que quando eu peço para pegar o MAX ID do banco de um determinado lado é somente a parte de fora daquela linha e não contar a parte de dentro da linha

 

tipo parte de fora seria os cadastros (Lado esquerdo: 2.1.1, 4.1.2, 5.2.4, 8.5.5 - Lado Direito: 3.1.1, 6.3.3)

Lado de dentro (chamada de perna interna) (Lado Esquerdo: 7.2.2 - Lado Direito: 9.3.3, 10.9.3, 11.3.10)

 

O que corre então é isto quando eu dou o Select Max.. ele pega tudo que for referente aquele lado que contenha a identificação 'D' OU 'E' Esquerda ou Direita.

 

estou colcocando aqui a modulagem do banco de dados que fiz, para verem se fiz algo de errado, afnal derrpente estou comendo bola no BD, desde ontem estou debruçado sobre tudo do MySql para ver se tem algum comando, clausula que eu possa usar para pegar este ID

 

# MySQL-Front 5.0  (Build 1.210)

/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */;
/*!40101 SET SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES */;
/*!40103 SET SQL_NOTES='ON' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS */;
/*!40014 SET FOREIGN_KEY_CHECKS=0 */;


# Host: localhost	Database: grupoeagle
# ------------------------------------------------------
# Server version 5.1.30-community

USE `grupoeagle`;

#
# Table Objects for table cad_consultor
#

DROP TABLE IF EXISTS `cad_consultor`;
CREATE TABLE `cad_consultor` (
  `IdConsultor` int(11) NOT NULL AUTO_INCREMENT,
  `IdPatrocinador` int(11) DEFAULT NULL,
  `IdAscendente` int(11) DEFAULT NULL,
  `PernaCadastro` varchar(1) DEFAULT NULL COMMENT 'D = Direita, E = Esquerda',
  `PernaPadrao` varchar(1) DEFAULT NULL COMMENT 'D = Direita, E = Esquerda',
  `Nome` varchar(150) DEFAULT NULL,
  `Email` varchar(150) DEFAULT NULL,
  `DataNascimento` date DEFAULT NULL,
  `Senha` varchar(30) DEFAULT NULL,
  `Sexo` varchar(1) DEFAULT NULL COMMENT 'F=Femenino, M=Masculino',
  `TipoPessoa` varchar(1) DEFAULT NULL COMMENT 'F = Física, J = Jurídica',
  `CpfCnpj` varchar(18) DEFAULT NULL,
  `Rg` varchar(25) DEFAULT NULL,
  `Cep` varchar(10) DEFAULT NULL,
  `Endereco` varchar(255) DEFAULT NULL,
  `Numero` varchar(10) DEFAULT NULL,
  `Complemento` varchar(50) DEFAULT NULL,
  `Bairro` varchar(50) DEFAULT NULL,
  `Cidade` varchar(50) DEFAULT NULL,
  `Estado` varchar(2) DEFAULT NULL,
  `Pais` varchar(25) DEFAULT NULL,
  `TelRes` varchar(13) DEFAULT NULL,
  `TelCel` varchar(13) DEFAULT NULL,
  `Banco` varchar(100) DEFAULT NULL,
  `Agencia` varchar(25) DEFAULT NULL,
  `Conta` varchar(25) DEFAULT NULL,
  `TipoConta` varchar(1) DEFAULT NULL COMMENT 'C = Corrente - P = Pupança',
  `NivelQuali` varchar(2) DEFAULT '1' COMMENT 'Nivel de Qualificação do Consultor - 1:Consultor, 11:Consultor Silver, 12:Consultor Gold, 13: Consultor Platinium, 21:Diretor Silver, 22:Diretor Gold, 23:Diretor Platinum, 31:Premium Asa 1, 32: Premium Asa 2, 33:Eagle',
  `DataCadastro` date DEFAULT NULL,
  `Acessos` varchar(20) DEFAULT '0',
  `Contrato` int(1) DEFAULT '1' COMMENT '1 = Sim 2= Não',
  PRIMARY KEY (`IdConsultor`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8;

#
# Dumping data for table cad_consultor
#
LOCK TABLES `cad_consultor` WRITE;
/*!40000 ALTER TABLE `cad_consultor` DISABLE KEYS */;

INSERT INTO `cad_consultor` VALUES (1,1,1,'D','D','Grupo Eagle Ltda','eagle@grupoeagle.com.br','2009-02-01','123456','M','J','000.000/0001-00','5.957.007-2','82630490','Estrada de Santa Cândida','474','Casa E','Santa Cândida','Curitiba','PR','Brasil','(41)3257-7941','(41)9999-9999','356 - BANCO ABN AMRO REAL S.A.','1234','123456-7','P','1','2009-02-06','8',NULL);
INSERT INTO `cad_consultor` VALUES (2,1,1,'E','E','Jorge Fabiano de Carvalho Kania','eagle@grupoeagle.com.br','1975-01-30','123456','M','F','866.554.509-34','5.957.007-2','82630490','Estrada de Santa Cândida','474','Casa E','Santa Cândida','Curitiba','PR','Brasil','(41)3257-7941','(41)9999-9999','356 - BANCO ABN AMRO REAL S.A.','1234','123456-7','P','33','2009-02-06','8',NULL);
INSERT INTO `cad_consultor` VALUES (44,1,1,'D','D','Teste',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (45,1,2,'E','E','teste 2',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (46,2,45,'E','E','teste 3',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (47,44,44,'D','D','teste 4',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (48,2,2,'D','D','Teste 5',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (49,46,46,'E','E','teste 6',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (50,44,44,'E','E','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (51,44,50,'E','E','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (52,44,51,'E','E',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (53,50,50,'D','D',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (54,53,53,'D','D',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (55,45,49,'E','E',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (56,45,45,'D','D',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (57,55,55,'D','D',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
INSERT INTO `cad_consultor` VALUES (58,57,57,'E','E',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,'0',1);
/*!40000 ALTER TABLE `cad_consultor` ENABLE KEYS */;
UNLOCK TABLES;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;

Também estou disponibilizando um código que fiz para ver se os dados do banco estavam entrando corretamente, é claro que os dados do banco forma colocados na mão direto no banco, algo que terá que ser feito direto pelo código depois.

 

<title>Tela de Teste da Rede Linear</title>
<!--#include file="conecta/conn.asp" -->
<%
IdPatrocinador =  Request.QueryString("Proximo")

	Set RsAs = Server.CreateObject("adodb.recordset")
	SQL = "SELECT COUNT(IdAscendente) as TotalCadE from cad_consultor where IdAscendente = '" & IdPatrocinador & "' and PernaCadastro = 'E'"
	RsAs.Open SQL,Conn,3,3
	
	IF RsAs("TotalCadE") < "1" Then
		
		Set RsAs2 = Server.CreateObject("adodb.recordset")
		SQL = "SELECT COUNT(IdAscendente) as TotalCadD from cad_consultor where IdAscendente = '" & IdPatrocinador & "' and PernaCadastro = 'D'"
		RsAs2.Open SQL,Conn,3,3
		
		IF RsAs2("TotalCadD") < "1" Then
			
			PernaCadastro = "Ainda nao tem um cadastrado na perna Esquerda<br>"
		
			Set RsP = Server.CreateObject("adodb.recordset")
			SQL = "select * from cad_consultor where IdConsultor = '" & IdPatrocinador & "'"
			RsP.Open SQL,Conn,3,3
							
			PernaCadastro = "Ainda nao tem um cadastrado na perna Direita: "&RsP("PernaCadastro")
			
			RsP.Close
			Set RsP = Nothing
		
		Else
		
			Set RsP = Server.CreateObject("adodb.recordset")
			SQL = "select * from cad_consultor where IdConsultor = '" & IdPatrocinador & "'"
			RsP.Open SQL,Conn,3,3
							
			PernaCadastro = "Ja tem um cadastrado na perna Direita: "&RsP("PernaPadrao")
							
			RsP.Close
			Set RsP = Nothing
		
		End If
		
	Else
			
		Set RsP = Server.CreateObject("adodb.recordset")
		SQL = "select * from cad_consultor where IdConsultor = '" & IdPatrocinador & "'"
		RsP.Open SQL,Conn,3,3
						
		PernaCadastro = "Ja tem um cadastrado na perna Esquerda: "&RsP("PernaPadrao")
							
		RsP.Close
		Set RsP = Nothing			
			
	End if
	
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "SELECT MAX(IdConsultor) AS ASCENDENTE from cad_consultor where PernaCadastro = 'e'"
	Rs.Open SQL,Conn,3,3
	
	Response.Write PernaCadastro&"<br>Proximo cadastro o Ascendente sera: "&RS("Ascendente")&"<br><br><br>"
	
	Rs.Close
	Set Rs = Nothing
	
	'====================================================================
	'====================================================================
	'REDE FORMATO LINEAR
	'====================================================================
	'====================================================================
	Response.Write"===================================================================<br>"
	Response.Write "REDE FORMATO LINEAR<BR>"
	Response.Write"===================================================================<br><br>"
	
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdConsultor = '" & IdPatrocinador & "'"
	Rs.Open SQL,Conn,3,3
	
	Pat = Rs("IdConsultor")
	
	
	Set Rs2 = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdPatrocinador = '" & Pat & "'  and IdConsultor <> '1'"
	Rs2.Open SQL,Conn,3,3
	
	Response.Write Rs("Nome")&" | "&Rs("IdConsultor")&"<br>"
	Response.Write"=============================<br>"
	Do until RS2.EOF
	
	Pat2 = Rs2("IdConsultor")
	Response.Write "<font face=""Tahoma, Geneva, sans-serif"" color=""#006600"" size=""3px"">Primeira Linha >> "&Rs2("IdConsultor")&" -  "&Rs2("PernaCadastro")&"</font><br>"
	
	
		Set Rs3 = Server.CreateObject("adodb.recordset")
		SQL = "select * from cad_consultor where IdPatrocinador = '" & Pat2 & "'"
		Rs3.Open SQL,Conn,3,3
		
		Do until RS3.EOF
		
		Pat3 = Rs3("IdConsultor")
		Response.Write "      |_<font face=""Tahoma, Geneva, sans-serif"" color=""#FF0000"" size=""3px"">Segunda Linha >> "&Rs3("IdConsultor")&" - "&Rs3("PernaCadastro")&"</font><br>"
		
		
			Set Rs4 = Server.CreateObject("adodb.recordset")
			SQL = "select * from cad_consultor where IdPatrocinador = '" & Pat3 & "'"
			Rs4.Open SQL,Conn,3,3
			
			Do until RS4.EOF
			
			Pat4 = Rs4("IdConsultor")
			Response.Write "            |_<font face=""Tahoma, Geneva, sans-serif"" color=""#0066FF"" size=""3px"">Terceira Linha >> "&Rs4("IdConsultor")&" - "&Rs4("PernaCadastro")&"</font><br>"
			
			
				Set Rs5 = Server.CreateObject("adodb.recordset")
				SQL = "select * from cad_consultor where IdPatrocinador = '" & Pat4 & "'"
				Rs5.Open SQL,Conn,3,3
				
				Do until RS5.EOF
				
				Response.Write "                  |_<font face=""Tahoma, Geneva, sans-serif"" color=""#CC6600"" size=""3px"">Quarta Linha >> "&Rs5("IdConsultor")&" - "&Rs5("PernaCadastro")&"</font><br>"
				
				RS5.movenext
				loop
				
				Rs5.Close
				Set Rs5 = Nothing
			
			RS4.movenext
			loop
			
			Rs4.Close
			Set Rs4 = Nothing
			
		RS3.movenext
		loop
			
		Rs3.Close
		Set Rs3 = Nothing
		
	RS2.movenext
	loop
	
	Rs2.Close
	Set Rs2 = Nothing
	
	
	'====================================================================
	'====================================================================
	'REDE FORMATO BINÁRIO
	'====================================================================
	'====================================================================
	Response.Write"<br><br>"
	Response.Write"===================================================================<br>"
	Response.Write "REDE FORMATO BINÁRIO<BR>"
	Response.Write"===================================================================<br><br>"
	
	'CABEÇA DA REDE
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdConsultor = '" & IdPatrocinador & "'"
	Rs.Open SQL,Conn,3,3
		
				
		IdCabeca = Rs("IdConsultor")
		NomeCabeca = Rs("PernaCadastro")
				
	Rs.Close
	Set Rs = Nothing
	
	'PRIMEIRA LINHA DO LADO ESQUERDO DA REDE
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdCabeca & "' and PernaCadastro = 'E'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.Eof Then
		IdLinhaUmE = "Espaço Vago"
		NomeLinhaUmE = ""
		Else		
		IdLinhaUmE = Rs("IdConsultor")
		NomeLinhaUmE = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'PRIMEIRA LINHA DO LADO DIREITO DA REDE
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdCabeca & "' and PernaCadastro = 'D' and IdConsultor <> '" & IdCabeca & "'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof then		
		IdLinhaUmD = "Espaço Vago"
		NomeLinhaUmD = ""
		Else
		IdLinhaUmD = Rs("IdConsultor")
		NomeLinhaUmD = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'SEGUNDA LINHA DO LADO ESQUERDO FORA
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaUmE & "' and PernaCadastro = 'E'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaDoisEE = "Espaço Vago"
		NomeLinhaDoiEE = ""
		Else
		IdLinhaDoisEE = Rs("IdConsultor")
		NomeLinhaDoiEE = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'SEGUNDA LINHA DO LADO ESQUERDO DENTRO
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaUmE & "' and PernaCadastro = 'D'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaDoisED = "Espaço Vago"
		NomeLinhaDoiED = ""
		Else
		IdLinhaDoisED = Rs("IdConsultor")
		NomeLinhaDoiED = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'SEGUNDA LINHA DO LADO DIREITO FORA
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaUmD & "' and PernaCadastro = 'D'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.Eof then
		IdLinhaDoisDD = "Espaço Vago"
		NomeLinhaDoiDD = ""
		Else
		IdLinhaDoisDD = Rs("IdConsultor")
		NomeLinhaDoiDD = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'SEGUNDA LINHA DO LADO DIREITO DENTRO
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaUmD & "' and PernaCadastro = 'E'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaDoisDE = "Espaço Vago"
		NomeLinhaDoiDE = ""
		Else
		IdLinhaDoisDE = Rs("IdConsultor")
		NomeLinhaDoiDE = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'TERCEIRA LINHA DO LADO ESQUERDO FORA
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaDoisEE & "' and PernaCadastro = 'E'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof then
		IdLinhaTresEE = "Espaço Vago"
		NomeLinhaTresEE = ""
		Else
		IdLinhaTresEE = Rs("IdConsultor")
		NomeLinhaTresEE = Rs("PernaCadastro")
		End IF
				
	Rs.Close
	Set Rs = Nothing
	
	'TERCEIRA LINHA DO LADO ESQUERDO DENTRO
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaDoisEE & "' and PernaCadastro = 'D'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaTresED = "Espaço Vago"
		NomeLinhaTresED = ""
		Else
		IdLinhaTresED = Rs("IdConsultor")
		NomeLinhaTresED = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'TERCEIRA LINHA DO LADO ESQUERDO DENTRO
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaDoisED & "' and PernaCadastro = 'D'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaTresEDD = "Espaço Vago"
		NomeLinhaTresEDD = ""
		Else
		IdLinhaTresEDD = Rs("IdConsultor")
		NomeLinhaTresEDD = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'TERCEIRA LINHA DO LADO ESQUERDO FORA
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaDoisED & "' and PernaCadastro = 'E'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaTresEDE = "Espaço Vago"
		NomeLinhaTresEDE = ""
		Else
		IdLinhaTresEDE = Rs("IdConsultor")
		NomeLinhaTresEDE = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'TERCEIRA LINHA DO LADO DIREITO FORA
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaDoisDD & "' and PernaCadastro = 'D'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaTresDDD = "Espaço Vago"
		NomeLinhaTresDDD = ""
		Else
		IdLinhaTresDDD = Rs("IdConsultor")
		NomeLinhaTresDDD = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'TERCEIRA LINHA DO LADO DIREITO DENTRO
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaDoisDD & "' and PernaCadastro = 'E'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaTresDDE = "Espaço Vago"
		NomeLinhaTresDDE = ""
		Else
		IdLinhaTresDDE = Rs("IdConsultor")
		NomeLinhaTresDDE = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'TERCEIRA LINHA DO LADO DIREITO DIREITO DENTRO
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaDoisDE & "' and PernaCadastro = 'D'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaTresDED = "Espaço Vago"
		NomeLinhaTresDED = ""
		Else
		IdLinhaTresDED = Rs("IdConsultor")
		NomeLinhaTresDED = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
	
	'TERCEIRA LINHA DO LADO DIREITO ESQUERDO DENTRO
	Set Rs = Server.CreateObject("adodb.recordset")
	SQL = "select * from cad_consultor where IdAscendente = '" & IdLinhaDoisDE & "' and PernaCadastro = 'E'"
	Rs.Open SQL,Conn,3,3
		
		If Rs.eof Then
		IdLinhaTresDEE = "Espaço Vago"
		NomeLinhaTresDEE = ""
		Else
		IdLinhaTresDEE = Rs("IdConsultor")
		NomeLinhaTresDEE = Rs("PernaCadastro")
		End If
				
	Rs.Close
	Set Rs = Nothing
%>
<table width="96%" border="0" cellpadding="10">
  <tr>
	<td colspan="8" align="center" bgcolor="#0099FF"><%=IdCabeca%></td>
  </tr>
  <tr>
	<td colspan="4" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaUmE%>"><%=IdLinhaUmE%></a></td>
	<td colspan="4" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaUmD%>"><%=IdLinhaUmD%></a></td>
  </tr>
  <tr>
	<td colspan="2" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaDoisEE%>"><%=IdLinhaDoisEE%></a></td>
	<td colspan="2" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaDoisED%>"><%=IdLinhaDoisED%></a></td>
	<td colspan="2" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaDoisDE%>"><%=IdLinhaDoisDE%></a></td>
	<td colspan="2" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaDoisDD%>"><%=IdLinhaDoisDD%></a></td>
  </tr>
  <tr>
	<td width="12%" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaTresEE%>"><%=IdLinhaTresEE%></a></td>
	<td width="12%" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaTresED%>"><%=IdLinhaTresED%></a></td>
	<td width="12%" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaTresEDE%>"><%=IdLinhaTresEDE%></a></td>
	<td width="12%" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaTresEDD%>"><%=IdLinhaTresEDD%></a></td>
	<td width="12%" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaTresDEE%>"><%=IdLinhaTresDEE%></a></td>
	<td width="12%" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaTresDED%>"><%=IdLinhaTresDED%></a></td>
	<td width="12%" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaTresDDE%>"><%=IdLinhaTresDDE%></a></td>
	<td width="12%" align="center" bgcolor="#0099FF"><a href="TesteP.asp?Proximo=<%=IdLinhaTresDDD%>"><%=IdLinhaTresDDD%></a></td>
  </tr>
</table>
<br /><br />

è isto ai, como falei ainda estou em cima da parte de como cadastrar. pois preciso do ID do Ascendente da pessoa qu estará cadastrando, e o ID da pessoa que estara cadastrando, se fosse um sistema linear simples o ascendete sempre seria o proprio cara que esta cadastrando o novo cadastrado, mas como é binário nem sempre será o mesmo., e o outro fatro que atrapalha é que o cara que esta cadastrando nunca pode cadastrar alguém nas pernas internas somente nas externas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece-me uma questão de um modelo de rede de relacionamento , a SqlMagasine publicou um artigo sobre isto uns meses atrás pode ter ajudar, pis tem a modelagem e a base matemática envolvida.

 

Outra coisa boa e ver os modelos e algoritmos de teoria de grafos

 

Palavras chaves

 

Dijkstra

 

Grafos

 

Não são modelos simples todavia , mas é um caminho para pensar seu modelo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom,

 

Nem lí tudo que você postou porque acho que tecnicamente podemos pensar diferente e entregar o resultado da forma que querem. Mas de cara tem algo errado na sua modelagem. Se você vai criar relacionamentos e/ou consultas com certos campos, estes precisam ter índices.

 

`IdConsultor` int(11) NOT NULL AUTO_INCREMENT,

`IdPatrocinador` int(11) DEFAULT NULL,

`IdAscendente` int(11) DEFAULT NULL,

`PernaCadastro` varchar(1) DEFAULT NULL COMMENT 'D = Direita, E = Esquerda',

`PernaPadrao` varchar(1) DEFAULT NULL COMMENT 'D = Direita, E = Esquerda',

 

Quando você faz essa consulta SELECT MAX(IdConsultor) as IdConsultor FROM cad_consultor WHERE IdPatrocinador = 1 and PERNACADASTRO = 'E'; precisa indexar essas dois campos, portanto não pode deixar campos indexados como NULL, sempre deve ser NOT NULL e pode usar DEFAULT ''.

 

`IdConsultor` int(11) NOT NULL AUTO_INCREMENT,

`IdPatrocinador` int(11) NOT NULL DEFAULT '0',

`IdAscendente` int(11) NOT NULL DEFAULT '0',

`PernaCadastro` varchar(1) NOT NULL DEFAULT '' COMMENT 'D = Direita, E = Esquerda',

`PernaPadrao` varchar(1) NOT NULL DEFAULT '' COMMENT 'D = Direita, E = Esquerda',

 

Pra simplificar, porque você não pensa na ordem das coisas?

 

primeiro você consulta o GRUPO, depois o IDINDICADOR, depois IDCLIENTE e por último IDASCENDENTE?

 

Assim você poderia usar o DB assim:

 

select max(IDASCENDENTE) from tabela where IDCLIENTE='clienteescolhido' and IDINDICADOR='indicadorescolhido' and GRUPO='grupoescolhido';

 

Eu entendi que no momento do cadastro a pessoa escolhe o GRUPO, o INDICADOR? só não entendi ainda se ele escolhe o CLIENTE.

 

Mas diante mão, você deve criar tabelas separadas para conseguir isso de forma mais simples.

 

create table JUNTARTUDO (

GRUPO enum('D','E','I') NOT NULL default 'I' COMMENT 'D/Direita-E/Esquerda-I/Indefinido',

IDINDICADOR bigint(11) NOT NULL default '0',

IDCLIENTE bigint(11) NOT NULL default '0',

IDASCENDENTE bigint(11) NOT NULL default '0',

primary key(GRUPO,IDINDICADOR,IDCLIENTE,IDASCENDENTE),

index indIDINDICADOR(IDINDICADOR),

index indIDCLIENTE(IDCLIENTE),

index indIDASCENDENTE(IDASCENDENTE)

);

 

E na tabela de cadastro, você poderia comparar valores como flags, algo assim:

 

Se ele tiver o IDCLIENTE<>0 significa que é cliente, se ele tiver IDINDICADOR<>0 significa que ele é indicador e se ele tiver IDCLIENTE<>0 e IDINDICADOR<>0 significa que ele é os dois (cliente e indicador) e assim por diante.

 

Quando você fizer a query, ficará molezinha encontrar o que quer, entendeu?

 

Basta apenas relacionar os IDs.

 

Na minha opinião é muito simples e de fato você trabalhar melhor na sua modelagem!

 

Valewww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa Alex, então, entendi sua colocação, como tenho dado as prioridades:

 

1 - Verifico quem o PAtrocinador (pessoa que esta indicando o novo cadastrado, este eu pego por session, ou por um request.form)

2 - Verifico em que posição da rede ele vai entrar, buscando o Ascendente dele

3 - Verifico em que grupo, perna (Direita ou Esquerda) ele estara entrando, neste caso a pessoa que já for cadastrada poderá escolher pela sua area de associado se quer deixar fixado um grupo determinado, exemplo, que todos os novos cadastros sempre caiam no grupo da esquerda, assim toda vez que alguem for cadastrar com aquela pessoa o grupo será pego pelo que foi determinado na configuração pelo usuário.

 

Tendo estes 3 parametros eu já consigo cadastrar o novo membro.

Só que to me batendo é para pegar o ID do Ascendente, pois como falei eu preciso fazer um select que vá até o final da rede, buscando o maior ID que foi cadastrado no grupo (esquerdo ou direito), porem o select trem que obrigatoriamente excluir da pesquisa os cadastros que forma efetuados por dentro da rede, naõ sei se to conseguindo explicar, mas se você ver a figura da para entender melhor, veja:

 

O ID !: é o cabeça, podemos dizer que o cara que logou dentro da sua area de afiliado, é o cabeça desta rede

 

Os Ids: 2, 4, 5, 8 - fazem parte do grupo da esquerda do ID 1

Os Ids: 3, 6 - fazem parte do grupo da direita do ID 1

Os outros IDs fazem parte da equipe porem são contados como pernas internas na rede, e não podem ser contado na hora de verificar o MAX id, ai vem a pergunta, como consigo no select excluir da pesquiza estes IDs?

 

Uma observação, Nunca o ID 1 por exmplo poderá efetuar um cadastro nestas redes internas, somente nas externas, e no exmplo da figura se ele fosse cadastrar alguém agora, teria obrigatóriamente de estar ou abaixo do ID 8 ou do ID 6

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que encontrei uma forma de te ajudar.

 

Na tabela cad_consultor você terá todo mundo cadastrado ok?

 

create table JUNTARTUDO (

GRUPO enum('D','E','I') NOT NULL default 'I' COMMENT 'D/Direita-E/Esquerda-I/Indefinido',

IDINDICADOR bigint(11) NOT NULL default '0',

IDCLIENTE bigint(11) NOT NULL default '0',

IDASCENDENTE bigint(11) NOT NULL default '0',

CPFCNPJ varchar(18) NOT NULL default '',

primary key(GRUPO,IDINDICADOR,IDCLIENTE,IDASCENDENTE),

index indIDINDICADOR(IDINDICADOR),

index indIDCLIENTE(IDCLIENTE),

index indIDASCENDENTE(IDASCENDENTE),

index indCPFCNPJ(CPFCNPJ)

);

 

Nesta tabela você teria os seguintes dados inicialmente porque a empresa já é o primeiro membro.

 

insert into JUNTARTUDO values ('D','1','1','1','00111222000101');

insert into JUNTARTUDO values ('E','1','1','1','00111222000101');

 

Para o próximo registro, basta fazer um select baseado no grupo que o usuário escolheu e no indicador, ou seja, ele escolhe o grupo D, consequentemente, você fará a query com max(IDASCENDENTE) quando o grupo for D, trabalha esses dados e armazena o segundo membro.

 

insert into JUNTARTUDO values ('D','1','1','2','00011122201'); e assim sucessivamente.

 

insert into JUNTARTUDO values ('D','1','1','3','11122233301');

 

Quando entrar um novo indicador, você fará a query com max(IDINDICADOR) para o grupo E que ele escolheu.

 

insert into JUNTARTUDO values ('E','2','1','1','22233344401'); e por ai vai.

 

insert into JUNTARTUDO values ('E','2','1','2','33344455501');

 

Quando entrar um novo cliente, você fará a query com max(IDCLIENTE) para o grupo D que ele escolheu.

 

insert into JUNTARTUDO values ('D','1','2','1','44455566601');

 

insert into JUNTARTUDO values ('D','1','2','2','55566677701');

 

Entendeu? resolve?

 

Valewww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não esqueça que sua tabela cad_consultor precisa ser retrabalhada.

 

No post anterior acrescentei o campo CPFCNPJ da tabela JUNTARTUDO que deve se relacionar com CpfCnpj da tabela cad_consultor, portanto, lá, você deve criar um índice para este campo.

 

Acho que está fácil de entender.

 

Valewww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fera efetuei as modificações sugeridas, porem não entendi a montagem que você fez, da tabela JUNTARTUDOpis ela cria IDs duplicados em todos so casos, você recomenda fazer o filtro pelo CPFCNPJ? isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você modelar direitinho não haverá duplicidade, acrescente o CPFCNPJ no índice primário

 

primary key(GRUPO,IDINDICADOR,IDCLIENTE,IDASCENDENTE,CPFCNPJ) assim é impossível duplicar.

 

Quanto aos filtros, veja como tratar cada dado.

 

Primeiro filtre pro GRUPO que é o que o usuário escolheu (assim eu entendi).

 

Então você já matou um parâmetro ok? Significa que você já sabe em que lado trabalhar, D ou E.

 

Em seguida, defina que outros dados filtrar.

 

Eu entendi que quem se cadastra é o IDASCENDENTE certo?

 

Portanto ele vai dizer quem foi o indicador. Dessa forma você passou a ter 2 parâmetros e assim sucessivamente.

 

No final você verá que sobrará quase nada pra você fazer, pois o CPJCNPJ é outro dado fornecido pelo usuário que está se cadastrando.

 

Por ai você percebe que sobraram apenas IDCLIENTE que apenas não entendi esse cara.

 

Faça um teste de mesa de forma simples com dados fictícios que ficará facil de fazer as filtragens.

 

Cadastre uns 10 registros na tabela cad_consultor e compare que fica mais fácil enxergar dados relacionados.

 

SUAEMPRESA 00111222000101

JOSÉ 00011122201

MANOEL 11122233301

MARIA 22233344401

ANTONIO 33344455501

FELIPE 44455566601

MARCOS 66677788801

CLAUDIO 77788899901

RICARDO 88899900011

GULIHERMINA 99900011101

JOÃO 00011122202

OUTRAEMPRESA 11222333000102

 

Na tabela JUNTARTUDO, junte tudo, distribuído pelos IDs e GRUPOS, relacionando CPFCNPJ com CpfCnpj, dai você vai encontrar a forma de filtrar sem encontrar erros.

 

Valewww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você ainda encontrar dificuldade, posta pra mim a descrição de tudo que você quer fazer sem mencionar nada tecnicamente.

 

Exemplo:

 

1 - O usuário acessa a internet e escolhe um lado que quer se cadastrar.

 

2 - O deve informar seu CPFCNPJ.

 

3 - O IDx deve ser definido.

 

4 - O IDy deve ser escolhido.

 

Enfim, tudo que deve ser feito e que resultado você quer chegar, dê preferência a dar nome aos bois assim:

 

O usuário1 deve ser ascendente do usuario5, o usuário3 deve ser indicado pelo usuário2 e assim por diante.

 

Espero poder te ajudar.

 

Valewww...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade Alex, é assim

 

1 - Patrocinador (IDPATROCINADOR) este é o cara que esta cadastrado o novo consultor

2 - O novo cadastrado que é o IDCONSULTOR na tabela cad_consultor

2- O Ascendente, que é quem vai estar logo acima do novo cadastrado na rede

3 - O grupo (esquerdo ou Direito) da rede conforme a escolha do Patrocinador

 

Para cadastrar um novo "Afiliado" na rede, antes devemos seguir algumas informações

 

1 - Quem esta cadastrando - IDPATROCINADOR

2- Em que grupo vai ser cadastrado (esquerdo ou direito, este eu epgo automaticamente das configurações do banco no campo PERNAPADRAO. a não sqer que seja um derramamento, que é quando o cadastro vem de uma pessoa que esta acima na rede, exemplo o ID 1 na figura cadastra lguém no grupo esquerdo, este devera derramar abaixo do ID 8

3- Saber quem será o Ascendente deste novo "Afiliado" seguindo o exmplo anterio o Ascendente seria o ID 8

4 - Preenche todo o restante dos dados no formulario.

 

Comm estas informações ue já consigo cadastrar na rede.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa desculpa só agora vi que você tinha mando outro post.. foi mal, vamos lá novamente

 

 

1 - Usuário acessa o site e clica em cadastrar

2- no cmapo patrocinador coloquei uma rotina em Ajax que verifica o ID digitado se exisite ou não no banco, então o primeiro item que eu pego é o IDPATROCINADOR

3- Ele escolhe se é pessoa física ou juridica

4 - Aceita o contrato da empresa (até aqui tudo em uma mesma pagina)

5 - Quando ele for para a proxima pagina eu faço varias verificações, se todos os campos da pagina anterior forma preenchido e corretamente caso contrario ele retorna para pagina anterior, tudo correto eu tenho agora que verificar qual a configuração padrão para grupo (CAMPO PERNAPADRAO NO BANCO) do patrocinador e verificar quem será dentro deste grupo o ASCENDENTE do novo cadastrado,.

6 - Agora ele vai preencher o restante dos dados, as informações anteriores eu gravo em uma Session (em ASP)

7 - O sistema tem que cadastrar no banco as informações, IDCONSULTOR (auto Incremento), IDPATROCINADOR, IDASCENDENTE, PERNACADASTRO, E TODAS AS OUTRAS INFORMAÇÕES PREENCHIDAS NO FORM DE CADASTRO.

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.