Ir para conteúdo

POWERED BY:

Arquivado

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

Marostegan

[Resolvido] transferir dados

Recommended Posts

Pessoal, bom dia!! ptz... olha eu dinovo aqui precisando de auxilio no Delphi e no SQL nos meus estudos...

 

Bom o que preciso fazer e não estou conseguindo resolver o probleminha... tenho 2 tabelas no meu sistema ( BDAccess) - tbl_usuarios e tbl_usuarios_fim

 

quando um cliente for deletado, antes dos dados serem excluídos do tbl_usuarios ele tem que ser feito uma cópia para tbl_usuarios_fim

 

a seguir o comando SQL que já usei em outras partes do sistema que tinham que fazer o mesmo procedimento e deu certo... esse aqui dá o seguinte erro "String literals may have at most 255 elements" que é por ter muitas indicações.... qual seria a solução para isso?

 

begin
dm.q_clientes_fim.Close;
dm.q_clientes_fim.SQL.Clear;
dm.q_clientes_fim.SQL.Add('Insert into tbl_clientes_terminados(empresa, responsavel, segmento, contato, tel1, tel2, tel3, ramal, endereco, n, bairro, cep, cidade, uf, complemento, email, site, valor_mensalidade, data_vencimento, fim_contrato, ser_contratado, data_inicial, hospedagem, data_hospedagem, periodo_hosp, v_hospedagem, v_mensalidade, ftp, ftp_usuario, ftp_senha, painel_ctrl, usuario, senha, reg_dominio, id_br, senha_br, data_dominio, info_adcionais, satisfacao) values ('''+f_cadastro_clientes.DBEdit2.Text+''','''+f_cadastro_clientes.DBEdit3.Text+''','''+f_cadastro_clientes.DBEdit38.Text+''','''+f_cadastro_clientes.DBEdit7.Text+''','''+f_cadastro_clientes.DBEdit4.Text+''','''+f_cadastro_clientes.DBEdit5.Text+''','''+f_cadastro_clientes.DBEdit36.Text+''','''+f_cadastro_clientes.DBEdit37.Text+''','''+f_cadastro_clientes.DBEdit8.Text+''','''+f_cadastro_clientes.DBEdit10.Text+''',
'''+f_cadastro_clientes.DBEdit9.Text+''','''+f_cadastro_clientes.DBEdit33.Text+''','''+f_cadastro_clientes.DBEdit11.Text+''','''+f_cadastro_clientes.DBEdit35.Text+''','''+f_cadastro_clientes.DBEdit14.Text+''','''+f_cadastro_clientes.DBEdit12.Text+''','''+f_cadastro_clientes.DBEdit13.Text+''','''+f_cadastro_clientes.DBEdit6.Text+''','''+f_cadastro_clientes.DBEdit34.Text+''','''+f_cadastro_clientes.DBEdit39.Text+''','''+f_cadastro_clientes.DBEdit15.Text+''','''+f_cadastro_clientes.DBEdit16.Text+''','''+f_cadastro_clientes.DBEdit17.Text+''','''+f_cadastro_clientes.DBEdit29.Text+''','''+f_cadastro_clientes.DBEdit18.Text+''','''+f_cadastro_clientes.DBEdit19.Text+''','''+f_cadastro_clientes.DBEdit20.Text+''','''+f_cadastro_clientes.DBEdit21.Text+''','''+f_cadastro_clientes.DBEdit22.Text+''',
'''+f_cadastro_clientes.DBEdit24.Text+''','''+f_cadastro_clientes.DBEdit23.Text+''','''+f_cadastro_clientes.DBEdit26.Text+''','''+f_cadastro_clientes.DBEdit25.Text+''','''+f_cadastro_clientes.DBEdit32.Text+''','''+f_cadastro_clientes.DBEdit27.Text+''','''+f_cadastro_clientes.DBEdit28.Text+''','''+f_cadastro_clientes.DBEdit30.Text+''','''+f_cadastro_clientes.DBMemo2.Text+''','''+f_cadastro_clientes.DBMemo1.Text+''')');
dm.q_clientes_fim.ExecSQL;
end;

desde já agradeço a ajuda de todos aqui do forum!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples... crie uma variável string e jogue sua sql em partes para ela.

 

var sSql : String;
Begin

sSql := 'Insert into tbl_clientes_terminados(empresa, responsavel, segmento, contato, tel1, tel2, tel3, ramal, endereco, ';
sSql := sSql + 'n, bairro, cep, cidade, uf, complemento, email, site, valor_mensalidade, data_vencimento, fim_contrato, ';
sSql := sSql + 'ser_contratado, data_inicial, hospedagem, data_hospedagem, periodo_hosp, v_hospedagem,  ';
sSql := sSql + 'v_mensalidade, ftp, ftp_usuario, ftp_senha, painel_ctrl, usuario, senha, reg_dominio, id_br, senha_br, ';
sSql := sSql + 'data_dominio, info_adcionais, satisfacao) values ';
sSql := sSql +('''+f_cadastro_clientes.DBEdit2.Text+''','''+f_cadastro_clientes.DBEdit3.Text+''',''' ';
sSql := sSql +f_cadastro_clientes.DBEdit38.Text+''','''+f_cadastro_clientes.DBEdit7.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit4.Text+''','''+f_cadastro_clientes.DBEdit5.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit36.Text+''','''+f_cadastro_clientes.DBEdit37.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit8.Text+''','''+f_cadastro_clientes.DBEdit10.Text+''',';
sSql := sSql +f_cadastro_clientes.DBEdit9.Text+''','''+f_cadastro_clientes.DBEdit33.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit11.Text+''','''+f_cadastro_clientes.DBEdit35.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit14.Text+''','''+f_cadastro_clientes.DBEdit12.Text+''','''';
sSql := sSql + f_cadastro_clientes.DBEdit13.Text+''','''+f_cadastro_clientes.DBEdit6.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit34.Text+''','''+f_cadastro_clientes.DBEdit39.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit15.Text+''','''+f_cadastro_clientes.DBEdit16.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit17.Text+''','''+f_cadastro_clientes.DBEdit29.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit18.Text+''','''+f_cadastro_clientes.DBEdit19.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit20.Text+''','''+f_cadastro_clientes.DBEdit21.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit22.Text+''','''+f_cadastro_clientes.DBEdit24.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit23.Text+''','''+f_cadastro_clientes.DBEdit26.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit25.Text+''','''+f_cadastro_clientes.DBEdit32.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit27.Text+''','''+f_cadastro_clientes.DBEdit28.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit30.Text+''','''+f_cadastro_clientes.DBMemo2.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBMemo1.Text+''')';

dm.q_clientes_fim.Close;
dm.q_clientes_fim.SQL.Clear;
dm.q_clientes_fim.SQL.Add(sSQL);
dm.q_clientes_fim.ExecSQL;
end;
end;

Ps1: Eu não testei o código acima, então pode ter erros de sintaxe. Mas em slqs, cada linha que passar para executar não pode ter mais que 255 caracteres... se tiver, tem que quebrar a string como mostrei acima pra rodar.

 

Ps2: Este é uma dica pra você: pelo que observo no seu código, você não costuma dar nomes aos seus componentes, deixando apenas o default... num primeiro momento, isso pode parecer perda de tempo mas, no futuro, a falta de nomes que identifiquem do que se trata seu campo pode te dar dores de cabeça para fazer manutenção... o ideal e o mais correto seria você nomear seus componentes de forma clara. Exemplo: em vez de dbedit1 por dbedtNomeEmpresa. Assim, você saberia que o componente é um dbedit e que o dado nele contido refere-se ao nome da empresa (isso é um exemplo, você pode criar suas próprias regras de nome de componente).

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples... crie uma variável string e jogue sua sql em partes para ela.

 

var sSql : String;
Begin

sSql := 'Insert into tbl_clientes_terminados(empresa, responsavel, segmento, contato, tel1, tel2, tel3, ramal, endereco, ';
sSql := sSql + 'n, bairro, cep, cidade, uf, complemento, email, site, valor_mensalidade, data_vencimento, fim_contrato, ';
sSql := sSql + 'ser_contratado, data_inicial, hospedagem, data_hospedagem, periodo_hosp, v_hospedagem,  ';
sSql := sSql + 'v_mensalidade, ftp, ftp_usuario, ftp_senha, painel_ctrl, usuario, senha, reg_dominio, id_br, senha_br, ';
sSql := sSql + 'data_dominio, info_adcionais, satisfacao) values ';
sSql := sSql +('''+f_cadastro_clientes.DBEdit2.Text+''','''+f_cadastro_clientes.DBEdit3.Text+''',''' ';
sSql := sSql +f_cadastro_clientes.DBEdit38.Text+''','''+f_cadastro_clientes.DBEdit7.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit4.Text+''','''+f_cadastro_clientes.DBEdit5.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit36.Text+''','''+f_cadastro_clientes.DBEdit37.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit8.Text+''','''+f_cadastro_clientes.DBEdit10.Text+''',';
sSql := sSql +f_cadastro_clientes.DBEdit9.Text+''','''+f_cadastro_clientes.DBEdit33.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit11.Text+''','''+f_cadastro_clientes.DBEdit35.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit14.Text+''','''+f_cadastro_clientes.DBEdit12.Text+''','''';
sSql := sSql + f_cadastro_clientes.DBEdit13.Text+''','''+f_cadastro_clientes.DBEdit6.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit34.Text+''','''+f_cadastro_clientes.DBEdit39.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit15.Text+''','''+f_cadastro_clientes.DBEdit16.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit17.Text+''','''+f_cadastro_clientes.DBEdit29.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit18.Text+''','''+f_cadastro_clientes.DBEdit19.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit20.Text+''','''+f_cadastro_clientes.DBEdit21.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit22.Text+''','''+f_cadastro_clientes.DBEdit24.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit23.Text+''','''+f_cadastro_clientes.DBEdit26.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit25.Text+''','''+f_cadastro_clientes.DBEdit32.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit27.Text+''','''+f_cadastro_clientes.DBEdit28.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBEdit30.Text+''','''+f_cadastro_clientes.DBMemo2.Text+''','''';
sSql := sSql +f_cadastro_clientes.DBMemo1.Text+''')';

dm.q_clientes_fim.Close;
dm.q_clientes_fim.SQL.Clear;
dm.q_clientes_fim.SQL.Add(sSQL);
dm.q_clientes_fim.ExecSQL;
end;
end;

Ps1: Eu não testei o código acima, então pode ter erros de sintaxe. Mas em slqs, cada linha que passar para executar não pode ter mais que 255 caracteres... se tiver, tem que quebrar a string como mostrei acima pra rodar.

 

Ps2: Este é uma dica pra você: pelo que observo no seu código, você não costuma dar nomes aos seus componentes, deixando apenas o default... num primeiro momento, isso pode parecer perda de tempo mas, no futuro, a falta de nomes que identifiquem do que se trata seu campo pode te dar dores de cabeça para fazer manutenção... o ideal e o mais correto seria você nomear seus componentes de forma clara. Exemplo: em vez de dbedit1 por dbedtNomeEmpresa. Assim, você saberia que o componente é um dbedit e que o dado nele contido refere-se ao nome da empresa (isso é um exemplo, você pode criar suas próprias regras de nome de componente).

 

[]'s

 

ok amigo, vou testar pra ver o resultado... depois posto aqui!!!

 

quanto aos nomes do componente, é verdade mesmo, obrigado pela dica, vou dar nome aos boizinhos agora... rss... não tinha pensando nisso ainda da parte de manunteção o trampo que vai dar isso aqui tudo sem nomee!!

 

 

mais uma dúvida que tenho... nesse form eu tenhu um DBCheckBox... qual a propriedade dela que eu uso pra transferir se está ou não marcada?

 

por exemplo, um DBEdit eu coloco DBEdit.text e da DBCheckBox... qual eu uso?

 

 

obrigado pela ajuda!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

opaaa... deu certo a paradinha aqui, precisei fazer ó alguns ajustes... vamos lá!!

 

 

var sSql : String;
Begin
sSql := 'Insert into tbl_clientes_terminados(empresa, responsavel, segmento, contato, tel1, tel2, tel3, ramal, endereco, ';
sSql := sSql + 'n, bairro, cep, cidade, uf, complemento, email, site, valor_mensalidade, data_vencimento, fim_contrato, ';
sSql := sSql + 'ser_contratado, data_inicial, hospedagem, data_hospedagem, periodo_hosp, v_hospedagem, ';
sSql := sSql + 'v_mensalidade, ftp, ftp_usuario, ftp_senha, painel_ctrl, usuario, senha, reg_dominio, id_br, senha_br, ';
sSql := sSql + 'data_dominio, info_adcionais, satisfacao, msn, skype, data_fim) values ';
sSql := sSql + '('''+f_cadastro_clientes.DBEdit2.Text+''','''+f_cadastro_clientes.DBEdit3.Text+''','''+f_cadastro_clientes.DBEdit38.Text+''','''+f_cadastro_clientes.DBEdit7.Text+''','''+f_cadastro_clientes.DBEdit4.Text+''','''+f_cadastro_clientes.DBEdit5.Text+''','''+f_cadastro_clientes.DBEdit36.Text+''','''+f_cadastro_clientes.DBEdit37.Text+''','''+f_cadastro_clientes.DBEdit8.Text+''',''';
sSql := sSql +f_cadastro_clientes.DBEdit10.Text+''','''+f_cadastro_clientes.DBEdit9.Text+''','''+f_cadastro_clientes.DBEdit33.Text+''','''+f_cadastro_clientes.DBEdit11.Text+''','''+f_cadastro_clientes.DBEdit35.Text+''','''+f_cadastro_clientes.DBEdit14.Text+''','''+f_cadastro_clientes.DBEdit12.Text+''','''+f_cadastro_clientes.DBEdit13.Text+''','''+f_cadastro_clientes.DBEdit6.Text+''','''+f_cadastro_clientes.DBEdit34.Text+''','''+f_cadastro_clientes.DBEdit39.Text+''',''';
sSql := sSql +f_cadastro_clientes.DBEdit15.Text+''','''+f_cadastro_clientes.DBEdit16.Text+''','''+f_cadastro_clientes.DBEdit17.Text+''','''+f_cadastro_clientes.DBEdit29.Text+''','''+f_cadastro_clientes.DBEdit18.Text+''','''+f_cadastro_clientes.DBEdit19.Text+''',''';
sSql := sSql +f_cadastro_clientes.DBEdit20.Text+''','''+f_cadastro_clientes.DBEdit21.Text+''','''+f_cadastro_clientes.DBEdit22.Text+''','''+f_cadastro_clientes.DBEdit24.Text+''','''+f_cadastro_clientes.DBEdit23.Text+''','''+f_cadastro_clientes.DBEdit26.Text+''','''+f_cadastro_clientes.DBEdit25.Text+''','''+f_cadastro_clientes.DBEdit32.Text+''','''+f_cadastro_clientes.DBEdit27.Text+''','''+f_cadastro_clientes.DBEdit28.Text+''',''';
sSql := sSql +f_cadastro_clientes.DBEdit30.Text+''','''+f_cadastro_clientes.DBMemo2.Text+''','''+f_cadastro_clientes.DBMemo1.Text+''','''+f_cadastro_clientes.DBEdit40.Text+''','''+f_cadastro_clientes.DBEdit41.Text+''','''+f_principal.l_data.Caption+''')';
dm.q_clientes_fim.Close;
dm.q_clientes_fim.SQL.Clear;
dm.q_clientes_fim.SQL.Add(sSQL);
dm.q_clientes_fim.ExecSQL;

 

no exemplo que você postou estava dando um pequeno erro pois as instruções SQL precisam coincidirem com as de baixo...

 

exemplo...

 

se nesse primeira linha eu tenho os seguintes dados: empresa, responsavel, segmento, contato, tel1, tel2, tel3, ramal, endereco

 

sSql := 'Insert into tbl_clientes_terminados(empresa, responsavel, segmento, contato, tel1, tel2, tel3, ramal, endereco, ';

então nessa eu tenho que ter os campos exatamente que correspondem aos dados acima:

 

sSql := sSql + '('''+f_cadastro_clientes.DBEdit2.Text+''','''+f_cadastro_clientes.DBEdit3.Text+''','''+f_cadastro_clientes.DBEdit38.Text+''','''+f_cadastro_clientes.DBEdit7.Text+''','''+f_cadastro_clientes.DBEdit4.Text+''','''+f_cadastro_clientes.DBEdit5.Text+''','''+f_cadastro_clientes.DBEdit36.Text+''','''+f_cadastro_clientes.DBEdit37.Text+''','''+f_cadastro_clientes.DBEdit8.Text+''',''';

ai é só felicidade... funfa certinho!!!

 

amigo, valew pela ajudaa!!!!

 

abraçoss!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hehehe, como eu disse eu não tinha testado o código, mas se funcionou ai é o que importa... eu particularmente não gosto de jogar direto os dados dos edits para a sql... geralmente crio variáveis do mesmo tipo que vou gravar no banco e jogo os dados para elas, e uso as variáveis no lugar dos edits na hora de montar a sql, passando por parâmetro o valor... em todo caso, se resolveu seu problema então sucesso.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hehehe, como eu disse eu não tinha testado o código, mas se funcionou ai é o que importa... eu particularmente não gosto de jogar direto os dados dos edits para a sql... geralmente crio variáveis do mesmo tipo que vou gravar no banco e jogo os dados para elas, e uso as variáveis no lugar dos edits na hora de montar a sql, passando por parâmetro o valor... em todo caso, se resolveu seu problema então sucesso.

 

[]'s

 

certo... ahn... pq você acha melhor por vairaveis do que jogar direto?

 

 

ah!! e brigadao pela força!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Questão de hábito... geralmente eu faço validações diversas antes de jogar os dados para as minhas rotinas de gravação, muitas vezes passando os dados por parâmetro já para as rotinas onde gravo os dados, validando antes se foi informado os dados na forma correta e tals.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Questão de hábito... geralmente eu faço validações diversas antes de jogar os dados para as minhas rotinas de gravação, muitas vezes passando os dados por parâmetro já para as rotinas onde gravo os dados, validando antes se foi informado os dados na forma correta e tals.

 

entendi!!

 

belezinha... amigo, obrigado plea força!

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.