Comando delete com sqllib

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Comando delete com sqllib

Mensagem por gilsonpaulo »

Comando não pega valor da variavel >:

Código: Selecionar todos

	select cadcli
		registro=cadcli->sql_rowid
		if .not. empty(razcli)
			op=msgbox2("CONFIRMA EXCLUSAO DO CLIENTE?" )
			if op=1
				csql:="delete from cadcli where sql_rowid="'+registro+'""
				sqlexecute(csql)
				sqlexecute( "commit" )
			endif				
  	  endif
Assim funciona.:

Código: Selecionar todos

	select cadcli
		registro=cadcli->sql_rowid
		if .not. empty(razcli)
			op=msgbox2("CONFIRMA EXCLUSAO DO CLIENTE?" )
			if op=1
				csql:="delete from cadcli where sql_rowid=10"
				sqlexecute(csql)
				sqlexecute( "commit" )
			endif				
  	  endif
Só falta isso, com insert e update funciona as variaveis.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Comando delete com sqllib

Mensagem por alxsts »

Olá!

Talvez existam brancos à esquerda na variável onde você armazena a chave (supondo que ela seja do tipo caracter). Tente:

Código: Selecionar todos

registro := LTrim( cadcli->sql_rowid )
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Comando delete com sqllib

Mensagem por Toledo »

gilsonpaulo escreveu:="'+registro+'""
Bom, não sei se foi erro de digitação, mas note que tem aspas duplas junto com aspas simples.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Comando delete com sqllib

Mensagem por Maligno »

não sei se foi erro de digitação, mas note que tem aspas duplas junto com aspas simples.
Estão apenas em ordem errada. Uma constante string precisa ser envolta em aspas simples. Logo,...

Código: Selecionar todos

csql := "delete from cadcli where sql_rowid= ' " + registro + " ' "
(Botei alguns espaços deliberadamente, pra tornar mais fácil perceber as aspas.)

Supondo que o tal "registro" seja realmente uma string. Mas como o OP diz que a segunda tentativa deu certo usando uma constante numérica, a história muda. Aí deve-se converter a variável "registro" para string (eliminando os espaços, como bem observou o Alexandre) e remover essas aspas simples; apenas somando tudo. Acho que não é preciso fazer um exemplo.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Comando delete com sqllib

Mensagem por Toledo »

gilsonpaulo escreveu:Assim funciona.:
...
csql:="delete from cadcli where sql_rowid=10"
Então eu acho que não deve ser string não! Neste caso teria que retirar as aspas simples.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Re: Comando delete com sqllib

Mensagem por gilsonpaulo »

Ok, muito obrigado, funcionou.

fiz assim para testes.:

Código: Selecionar todos

		if .not. empty(razcli)
			op=msgbox2("CONFIRMA EXCLUSAO DO CLIENTE?" )
			if op=1
				csql:="delete from cadcli where razcli='"+cadcli->razcli+"'"
				sqlexec(csql)                                   
				sqlexecute( "commit" )
			endif				
  	  endif
Segue codigo, estou testando a sqllib do Vailton, mas quero utilizar comandos sql.

Código: Selecionar todos

#include 'sqllib.ch'

function clientes()

telacli=savescreen(00,00,31,97)

cSQL:= "select * from cadcli order by sql_rowid"
select 1
use sql (csql) alias cadcli
go top

telcli()

do while .t.

	set cursor off
	setcolor("7/1,7/1")
	
	@ 03,09 say sql_rowid
	@ 03,35 say razcli
	@ 04,16 say fancli
	@ 04,72 say tippes
	@ 04,93 say blocli
	@ 06,06 say cepcli picture "@R 99999-999"
	@ 06,27 say endcli
	@ 06,87 say padr(numero,04)
	@ 07,11 say baicli
	@ 07,51 say cidcli
	@ 07,87 say ufcli
	if tippes = "FISICA"
		@ 08,11 say cpfcnpj picture "@R 999.999.999-99"
	else
		@ 08,11 say cpfcnpj picture "@R 99.999.999/9999-99"
	endif        
	@ 08,40 say inscrg
	@ 08,71 say contato
	@ 09,11 say fonecli picture "@R (99)9999-9999"
	@ 09,31 say faxcli picture "@R (99)9999-9999"
	@ 09,55 say celcli picture "@R (99)9999-9999"
	@ 09,78 say nextel
	@ 10,08 say email
	@ 10,59 say website
	
	ik=0

	ik = inkey(0)

	if ik=27
		restscreen(00,00,31,97,telacli)
		exit
	elseif ik=5
		skip -1
		ik = 0
 	elseif ik=24 
		skip 
		ik = 0
	elseif ik = 6
		go bottom
	elseif ik = 1
		go top
	elseif ik = 105 .or. ik = 73
		icadcli()
		atucadcli()
	elseif ik = 68 .or. ik = 100
		select 1
		use
		cSQL:= "select * from cadcli order by sql_rowid"
		select 1
		use sql (csql) alias cadcli
		go top
	elseif ik = 78 .or. ik = 110
		select 1
		use
		cSQL:= "select * from cadcli order by razcli"                           
		select 1
		use sql (csql) alias cadcli
		go top
	elseif ik = 69 .or. ik = 101
		if .not. empty(razcli)
			op=msgbox2("CONFIRMA EXCLUSAO DO CLIENTE?" )
			if op=1
				csql:="delete from cadcli where razcli='"+cadcli->razcli+"'"
				sqlexec(csql)                                   
				sqlexecute( "commit" )
			endif				
  	  	endif
	else
		tone(300)
	endif

	if eof()
		skip -1
		registro=sql_rowid
	endif

	if bof()
		go top
		registro=sql_rowid
	endif
enddo
select 1
use
return
*************************************************************************************************
function icadcli()

local	irazcli:=space(61),ifancli:=space(40),itippes:=space(08),iblocli:=space(03),;
		icepcli:=space(08),iendcli:=space(50),inumero:=space(04),ibaicli:=space(30),icidcli:=space(30),;
		iufcli:=space(02),icpfcnpj:=space(14),iinscrg:=space(20),icontato:=space(25),ifonecli:=space(10),;
		ifaxcli:=space(10),icelcli:=space(10),inextel:=space(18),iemail:=space(40),iwebsite:=space(37)

telcli()
		
do while .t.

	setcolor("w/b,w+/b,,,w/b")
	@ 03,35 get irazcli picture "@!KX" valid !empty(irazcli)
	@ 04,16 get ifancli picture "@!KX" valid !empty(ifancli)
	@ 06,06 get icepcli picture "@R 99999-999"
	set cursor on
	read	
	set cursor off
	if lastkey() == 27
		return
	endif

   op=msgbox2("CONFIRMA INCLUSAO DO CLIENTE?" )
	if op = 1
//		if len(alltrim(icpfcnpj)) = 14
//			itippes="JURIDICA"
//		else
//			itippes="FISICA"
//		endif
		sqlexecute('insert into cadcli(razcli,fancli,cepcli) values ("'+irazcli+'","'+ifancli+'","'+icepcli+'")')
	endif
	exit
enddo
*************************************************************************************************
*************************************************************************************************
function atucadcli()
select 1
use
cSQL:= "select * from cadcli order by sql_rowid"
select 1
use sql (csql) alias cadcli
go top
*************************************************************************************************			
O erro ocorria quanto tentava utilizar a coluna sql_rowid.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Comando delete com sqllib

Mensagem por Maligno »

Envolver um campo numérico em aspas simples dá o mesmo efeito de não envolvê-lo. Funciona das duas formas. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Re: Comando delete com sqllib

Mensagem por gilsonpaulo »

Amigos, com a ajuda do Mestre Vailtom resolvi o problema.:

Código: Selecionar todos

sqlexecute('delete * from cadcli where sql_rowid="'+STR(registro)+'"')
Obrigado a ajuda de todos.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Comando delete com sqllib

Mensagem por alaminojunior »

Gilson, por acaso você está testando a versão DEMO 1.9h da SQLLIB PLUS ?
Caso sim, tería como me informar o link para download da mesma ? Já tentei direto com o Vailton e no site deles, mas não consigo.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
gilsonpaulo
Usuário Nível 3
Usuário Nível 3
Mensagens: 135
Registrado em: 02 Fev 2008 11:30
Localização: Quatro Barras

Re: Comando delete com sqllib

Mensagem por gilsonpaulo »

Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Re: Comando delete com sqllib

Mensagem por Toledo »

O arquivo está corrompido!

O Vailton falou que vai colocar o link aqui no fórum.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
vailton
Colaborador
Colaborador
Mensagens: 390
Registrado em: 17 Nov 2005 19:08
Localização: Brasil
Contato:

Re: Comando delete com sqllib

Mensagem por vailton »

Bom dia,
Links para download:

SQL LIB Maio/2009 - DEMO
Versão 1.9h - Para Harbour & xHarbour
Download da SQL LIB Plus! para Harbour ou xHarbour com suporte para MySQL apenas. Esta LIB é a DEMO da versão comercial da RDD.
Download:
http://www.sqllib.com.br/down/SQL-LIB-D ... ercial.zip - 3.36MB

SQL LIB Maio/2009 - FREE
Versão 1.9h - Para Harbour & xHarbour
Download da SQL LIB Free para Harbour ou xHarbour com suporte para MySQL apenas. Esta LIB é a versão gratuita da SQL LIB.
Download:
http://www.sqllib.com.br/down/SQL-LIB-v1.9h-FREE.zip - 3.39MB

Att,
Vailton Renato
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
Responder