Bom dia Pessoal,
Cria um Controle para importar dados de uma planilha Excel, no evento OnValidate inclui o código. SC na versão 8.1
Após selecionar o arquivo excel e importar apresenta a mensagem de erro com caracteres estranhos, onde deveria trazer os dados da planilha.
ERRO:
SELECT * FROM TB_BI_PESSOA_SERVICO WHERE CPF_CNPJ = " õ’ýãšö O /îc)ÇwÚ‡œÝbñ ÿÿ PK !¸ ðxm xl/workbook.xmlŒRANÃ0 ¼#ñ Ëwê$mB©šTB€è õPÚ³‰7 UÇŽl‡´¿g“(¥ œ¼ã gÇ^®N•"Ÿ
4:¥á$ tn„Ô‡”¾o_îæ”8ϵàÊhHé ]e·7ËÖØã‡1G‚ Ú¥´ô¾^0æò î&¦ ÂØŠ{„öÀ\m W øJ±( Vq©é °°ÿÑ0E!sx2yS öƒˆ Å=Úw¥¬ Í–…T° &“¼®ßx…¾OŠ Å ÒƒHiŒÐ´ðcÃ6õc# v ¦Á”²ì2äÆ o”ßâx£:æ Í¢(é˜] ; û>ÔArÚK-L›ÒÙ £= (AÐö ½ ¾D¥ ÑÓ°÷” AND CD_SERVICO = AND DT_PESSOA_SERVICO = ""2SELECT * FROM TB_BI_PESSOA_SERVICO WHERE CPF_CNPJ = "òPú”ÞßÇq’ήÔûüð–~%º n£¸ ñ ºh×h k» Xص ; ßä芌õ… ýEž^‘±¾ û„Øè’çǘº¥·0‹“¨¿› ?%û ÿÿ PK !ÞdûdŸ ¸ xl/theme/theme1.xmlìYMo E ¾#ñ F{oc’¶ GuªØ± hÓF±[Ôãxw¼;õìÎjfœÔ7Ô ‘ qAâÆ •Z‰K9ñS EP¤þ Þ™Ù]ïÄ›&) h wöy¿?æ Ù«× Ä !)O:^ýrÍC$ñy@“°ãÝ .{H*œ ˜ñ„t¼9‘ÞµÍwß¹Š7TDb‚€>‘ ¸ãEJ¥ ++Ò‡e" AND CD_SERVICO = /ó”$ðnÂEŒ <Šp% ø øÆleµVkĘ& JplG@ƒ ŽnO&Ô’ÞfξÏ@F¢¤^ð™ jæ$£éK_PõÓSA¹! ¦u “sÙc Öñ@\À Gä ò ÃRÁ‹ŽW3 ÞÊæÕ ¼‘ 1u m‰n
þ2ºŒ ˜® ™" BëƒFûÊvÁߘZÆõûý^¿^ð3ìû`®Õ¥Ì³1X¯wsž% ý¹Ì»WkÖ .¾Ä mIçv·Ûm¶3] AND DT_PESSOA_SERVICO = “S ²? KøõZ«±µêà Èâ›KøFw«×k9x ²øÖ ~p¥Ýj¸x Š M¦Kh ÐÁ ã^@&œíTÂ× ¾^Ëà dC‘bZÄ„'êµ ãû\¥Ñ+š 5OÉ û Ñ= ÅZ” 2 SELECT * FROM TB_BI_PESSOA_SERVICO WHERE CPF_CNPJ = "Þ ¸ôÆ.ùriI D:©SÕñÞO1TÇ‚ß«çß¾zþ ½zþäèá³£‡? =ztôð{ËË!ÜÁIX&|ùõ’ |ù!úýéW/ V —eü/ß}ôó ŸV ¡Œ
CÓDIGO (OnValidate) :
// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$arq = $caminho.’/’.{arquivo};
// Processando a leitura
$fp = fopen($arq,‘r’);
// Pegando a primeira linha (cabeçalho)
$linha = fgets($fp);
// Pegando o caracter separador na coluna 12
$caracter = substr($linha,12,1);
// Processando arquivo
while ($dados = fgetcsv($fp, filesize($arq), $caracter))
$tabela[] = $dados;
fclose($fp);
$insert_sql = ‘INSERT INTO TB_BI_PESSOA_SERVICO (’
.‘CPF_CNPJ,CD_SERVICO,DT_PESSOA_SERVICO,QT_PESSOA_SERVICO,’
.‘VL_PESSOA_SERVICO,DS_OBSERVACAO,DS_CONVENIO,DT_CADASTRO,’
.‘CD_USUARIO_CADASTRO,DT_ATUALIZACAO,CD_USUARIO_ATUALIZACAO) VALUES’;
foreach ($tabela as $campo)
{
if (empty($campo[1])) {
break;
}
$check_sql = ‘SELECT * FROM TB_BI_PESSOA_SERVICO ’
.’ WHERE CPF_CNPJ = “’.$campo[0].’” AND CD_SERVICO = ‘.$campo[1]
.’ AND DT_PESSOA_SERVICO = “’.$campo[2].’”’;
echo $check_sql;
sc_select(dataset, $check_sql);
if (false == {dataset}) // Error while accessing database
{
sc_error_message(‘Erro durante acesso ao PESSOA SERVICO.’);
}
elseif (!{dataset}->EOF) // Existe na tabela
{
continue;
}
elseif ({dataset}->EOF) // Não existe na tabela
{
$CPF_CNPJ = $campo[0];
$CD_SERVICO = $campo[1];
$DT_PESSOA_SERVICO = $campo[2];
$QT_PESSOA_SERVICO = $campo[3];
$VL_PESSOA_SERVICO = $campo[4];
$DS_OBSERVACAO = $campo[5];
$DS_CONVENIO = $campo[6];
$DT_CADASTRO = ‘01/01/2000’;
$CD_USUARIO_CADASTRO = [gloLogin];
$DT_ATUALIZACAO = ‘01/01/2000’;
$CD_USUARIO_ATUALIZACAO = [gloLogin];
// Monta a parte de inserção dos campos
$insert_sql2 = " ('".$CPF_CNPJ."',".$CD_SERVICO.",'".$DT_PESSOA_SERVICO."',".$QT_PESSOA_SERVICO.",";
$insert_sql2 .= "".$VL_PESSOA_SERVICO.",'".$DS_OBSERVACAO."','".$DS_CONVENIO."','".$DT_CADASTRO."',";
$insert_sql2 .=
"'".$CD_USUARIO_CADASTRO."','".$DT_ATUALIZACAO."','".$CD_USUARIO_ATUALIZACAO."'),";
$insert_sql .= $insert_sql2;
}
}
if (empty($insert_sql2)) {
sc_error_message(“Não há registros a atualizar, verifique”);
}
else {
// Tira o último caractere (vírgula extra)
// $insert_sql = substr($insert_sql, 0, -1);
// Inserir registros
sc_exec_sql($insert_sql);
// Pega o número de registros inseridos
$cadastrados = mysql_affected_rows();
sc_error_message("Lojas cadastradas: " . $cadastrados);
}