JoaoG Posted March 27, 2026 at 11:17 AM Report #635666 Posted March 27, 2026 at 11:17 AM (edited) Bom dia. Estou a fazer um desenvolvimento para enviar uma SMS quando um dosser é criado. Eu consegui enviar a primeira SMS mas agora não envia queixando-se da primary key. Já tentei com o código de exemplo que aparece na net mas diz que a classe não está definida? O tal código que aparece na net é este: *--- Código para envio de SMS no PHC CS LOCAL lcTelefone, lcMensagem, loSMS *--- 1. Definir o número de telefone (obrigatório com indicativo, ex: +351) lcTelefone = ALLTRIM(ft.telefone) && Exemplo: telefone do cliente no ft IF EMPTY(lcTelefone) RETURN ENDIF *--- 2. Definir o texto da mensagem lcMensagem = "Olá, a sua encomenda " + ALLTRIM(ft.nrdoc) + " foi gravada com sucesso." *--- 3. Chamar a classe interna de envio SMS do PHC loSMS = CREATEOBJECT("phcSMS") IF TYPE("loSMS") = "O" *-- loSMS.SendSMS(Telefone, Mensagem, [NomeEntidade], [IDEntidade], [TipoEntidade]) loSMS.SendSMS(lcTelefone, lcMensagem, "Cliente", ft.no, "FT") ENDIF O código de teste que enviou a primeira mas na segunda queixa-se da Primary Key é: LOCAL lcTel, lcNome, lcMsg, lcSQL * 1) Só envia se NDOS = 1 IF bo.ndos # 1 RETURN .F. ENDIF * 2) Preparar dados do cliente lcTel = ALLTRIM(CHRTRAN(cl.tlmvl, "+- ", "")) && remove + e - simples lcNome = ALLTRIM(cl.Nome) IF EMPTY(lcTel) RETURN .F. ENDIF * 3) Mensagem da SMS lcMsg = "A sua encomenda " + ALLTRIM(TRANSFORM(bo.obrano)) + ; " foi enviada. Obrigado." * 4) Construir INSERT para tabela interna SMS TEXT TO lcSQL TEXTMERGE NOSHOW INSERT INTO sms (telemovel, data, hora, nome, mensagem, destinatario, enviado, marcada, utilizador) VALUES ('<<lcTel>>', GETDATE(), CONVERT(char(8), GETDATE(), 108), 'Envio de encomenda', '<<lcMsg>>', '<<lcNome>>', 0, 0, 'Teste') ENDTEXT * 5) Executar SQL via função PHC u_sqlexec(lcSQL, [cur_sms]) IF USED("cur_sms") USE IN cur_sms ENDIF RETURN .T. O erro: Erro : [Microsoft][SQL Server Native Client 11.0][SQL Server]Violation of PRIMARY KEY constraint 'pk_sms'. Cannot insert duplicate key in object 'dbo.sms'. The duplicate key value is ( ). Agradecia imenso se alguém conseguisse ajudar. Edited March 27, 2026 at 11:20 AM by JoaoG
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now