Erro no DbGoBottom() / SQLRDD
Moderador: Moderadores
-
andersoncamilo
- Usuário Nível 3

- Mensagens: 103
- Registrado em: 22 Ago 2004 11:54
Erro no DbGoBottom() / SQLRDD
Bom dia
Estou com um problema na função DbGoBottom() com o SQLRDD e PostGreSql 8.3, o problema acontece quando excluo o último registro inserido, e tento usar a função DbGoBottom() me retorna a seguinte mensagem: Error SQLRDD/1 Tentativa de gravar um registro em tabela vazia sem antes adicionar uma linha - RollBack executed.: CARRETEIRO., antes que falem que estou tentando gravar sem dar um append blank, estou dando o append blank sim, esse erro acontece após o DbGoBottom() .
Error at ...: SR_WORKAREA:RUNTIMEERR(1820) in Module: ..\source\sqlrdd2.prg
Called from : SR_WORKAREA:RUNTIMEERR(1852) in Module: ..\source\sqlrdd2.prg
Called from : SR_WORKAREA:WRITEBUFFER(2091) in Module: ..\source\sqlrdd2.prg
Called from : DBGOBOTTOM(0) in Module:
Called from : POECODIGO(1341) in Module: APOIOXHB.PRG
Called from : TELACARRETEIRO(462) in Module: LACAD.PRG
Called from : ENTRA_DADOS(629) in Module: APOIOXHB.PRG
Called from : CADPRODUCAO(110) in Module: LACAD.PRG
Called from : CADASTROS(68) in Module: LACAD.PRG
Called from : INICIOSISTEMA(579) in Module: LATICINI.PRG
Called from : MAIN(520) in Module: LATICINI.PRG
Fazendo alguns testes percebi que isso acontece porque o maior número do campo sr_recno na tabela que foi excluido o registro e menor do que o Next Value da sequence que esta no banco de dados, dai para frente toda vez que eu tentar usar o DbGoBottom() vai dar erro, para sanar o problema eu tenho que ir na sequence da tabela e ajustar o Next Value para o numero do maior sr_recno + 1. (No Caso da sequencia do Next Value esta correto, porque se foi excluído a sequencia continua não volta, acredito que o sqlrdd deva fazer algum tipo de comparação entre o maior sr_recno com o next value).
Se for excluído qualquer outro registro que não seja o último inserido funciona tudo certinho, alguém já viu esse problema e tem alguma ideia ou uma dica para resolve-lo.
Obrigado
Anderson Camilo
Estou com um problema na função DbGoBottom() com o SQLRDD e PostGreSql 8.3, o problema acontece quando excluo o último registro inserido, e tento usar a função DbGoBottom() me retorna a seguinte mensagem: Error SQLRDD/1 Tentativa de gravar um registro em tabela vazia sem antes adicionar uma linha - RollBack executed.: CARRETEIRO., antes que falem que estou tentando gravar sem dar um append blank, estou dando o append blank sim, esse erro acontece após o DbGoBottom() .
Error at ...: SR_WORKAREA:RUNTIMEERR(1820) in Module: ..\source\sqlrdd2.prg
Called from : SR_WORKAREA:RUNTIMEERR(1852) in Module: ..\source\sqlrdd2.prg
Called from : SR_WORKAREA:WRITEBUFFER(2091) in Module: ..\source\sqlrdd2.prg
Called from : DBGOBOTTOM(0) in Module:
Called from : POECODIGO(1341) in Module: APOIOXHB.PRG
Called from : TELACARRETEIRO(462) in Module: LACAD.PRG
Called from : ENTRA_DADOS(629) in Module: APOIOXHB.PRG
Called from : CADPRODUCAO(110) in Module: LACAD.PRG
Called from : CADASTROS(68) in Module: LACAD.PRG
Called from : INICIOSISTEMA(579) in Module: LATICINI.PRG
Called from : MAIN(520) in Module: LATICINI.PRG
Fazendo alguns testes percebi que isso acontece porque o maior número do campo sr_recno na tabela que foi excluido o registro e menor do que o Next Value da sequence que esta no banco de dados, dai para frente toda vez que eu tentar usar o DbGoBottom() vai dar erro, para sanar o problema eu tenho que ir na sequence da tabela e ajustar o Next Value para o numero do maior sr_recno + 1. (No Caso da sequencia do Next Value esta correto, porque se foi excluído a sequencia continua não volta, acredito que o sqlrdd deva fazer algum tipo de comparação entre o maior sr_recno com o next value).
Se for excluído qualquer outro registro que não seja o último inserido funciona tudo certinho, alguém já viu esse problema e tem alguma ideia ou uma dica para resolve-lo.
Obrigado
Anderson Camilo
Erro no DbGoBottom() / SQLRDD
Anderson, tem como vc postar um pequeno exemplo tipo dbcreate uma tabelinha simples e já add alguns dados pra ela tudo via código e depois coloca um exemplo do q vc esta passando com esta simulação para eu simular aki no meu sqlrdd pra ver se consigo te ajudar?
[]´s
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
andersoncamilo
- Usuário Nível 3

- Mensagens: 103
- Registrado em: 22 Ago 2004 11:54
Erro no DbGoBottom() / SQLRDD
Ola Fladimir
Eu fiz uns testes e consegui detectar o que provoca o erro, montei até um exemplo em cima do programa demo que vem junto na pasta samples, o erro aconte quando se deleta o ultimo registro da tabela e depois você usa um scopo.
Mas isso não resolve o meu problema porque pode acontecer de ter que deletar esse registro, e no meu caso eu utilizo o scopo, para controlar a empresa que esta em uso.
Segue abaixo o fonte dos testes.
Obrigado
Anderson Camilo
Eu fiz uns testes e consegui detectar o que provoca o erro, montei até um exemplo em cima do programa demo que vem junto na pasta samples, o erro aconte quando se deleta o ultimo registro da tabela e depois você usa um scopo.
Mas isso não resolve o meu problema porque pode acontecer de ter que deletar esse registro, e no meu caso eu utilizo o scopo, para controlar a empresa que esta em uso.
Segue abaixo o fonte dos testes.
Código: Selecionar todos
/*
* SQLRDD Test
* Copyright (c) 2003 - Marcelo Lombardo <marcelo@xharbour.com.br>
* All Rights Reserved
*/
#include "sqlrdd.ch"
#define RECORDS_IN_TEST 1000
#define SQL_DBMS_NAME 17
#define SQL_DBMS_VER 18
/*------------------------------------------------------------------------*/
REQUEST DBFNTX
REQUEST DBFCDX
REQUEST DBFFPT
REQUEST DBFDBT
Function Main( cRDD, cDSN )
local aStruct := {{"CODE_ID","C",8,0 },;
{"CARDID","C",1,0},;
{"DESCR","C",50,0},;
{"PERCENT","N",10,2},;
{"DAYS","N",8,0},;
{"DATE_LIM","D",8,0},;
{"ENABLE","L",1,0},;
{"OBS","M",10,0},;
{"VALUE","N",18,6},;
{"ID_EMPRESA","C",4,0} }
local nCnn, i
? ""
? "Teste.exe"
? ""
? "Teste com SQLRDD "
? ""
? "Connecting to database..."
* SR_SetUseSequences(.T.) // DESABILITA O CONTADOR DE SEQUENCIA AUTOMATICO
SR_UseDeleteds( .F. ) // NÃO MANTER REGISTROS DELETADOS NAS TABELAS
SR_SetFastOpen(.T.) // ABRE AS TABELAS EM MODO COMPARTILHADO
SR_SetGoTopOnScope(.F.) // NÃO EXECUTA O DBGOTOP() AUTOMATICO NOS ORDSCOPE
SR_MaxRowCache( 10 ) // Quantidade máxima de linhas mantidas em cache em tabelas do SQLRDD. O Default é 1000.
SR_SetBaseLang( 2 ) // linguagem portugues
SR_Msg(2) // portugues
SR_SETSYNTHETICINDEX(.F.) // vale o que for configurado pela função SR_SetSyntheticIndexMinimun().
SR_SETSYNTHETICINDEXMINIMUN(10) // Quantidade mínima de colunas na chave de índice para criá-lo como Sintético. Os valores aceitos são entre 0 e 10.
SETPGSOLDBEHAVIOR(.T.) // CONSIDERAR CAMPOS NULL COMO VAZIO
If !Connect("SQLRDD", "POSTGRES NATIVE")
alert('Nao foi possivel conectar ao banco de dados...!')
close all
quit
EndIf
? "Connected to :", SR_GetConnectionInfo(, SQL_DBMS_NAME ), SR_GetConnectionInfo(, SQL_DBMS_VER )
? "RDD in use :", cRDD
? "Creating table :", dbCreate( "TEST_TABLE", aStruct, "SQLRDD" )
USE "TEST_TABLE" EXCLUSIVE VIA "SQLRDD"
? "Table opened. Alias :", select(), alias(), RddName()
? "Fieldpos( CODE_ID ) :", Fieldpos( "CODE_ID" )
? "Fieldpos( DESCR ) :", Fieldpos( "DESCR" )
? "Creating 02 indexes..."
Index on ID_EMPRESA + CODE_ID tag TEST_TABLE_IND01 to TEST_TABLE
Index on str(DAYS) + dtos(DATE_LIM) tag TEST_TABLE_IND02 to TEST_TABLE
? "Appending " + alltrim(str(RECORDS_IN_TEST)) + " records.."
s := seconds()
For i = 1 to RECORDS_IN_TEST
Append Blank
Replace ID_EMPRESA WITH '0001'
Replace CODE_ID with strZero( i, 5 )
Replace DESCR with dtoc( date() ) + " - " + time()
Replace DAYS with (RECORDS_IN_TEST - i)
Replace DATE_LIM with date()
Replace ENABLE with .T.
Replace OBS with "This is a memo field. Seconds since midnight : " + alltrim(str(seconds()))
Next
? "dbClearIndex() :", dbClearIndex()
? "dbCloseArea() :", dbCloseArea()
USE "TEST_TABLE" SHARED VIA "SQLRDD"
? "Opening Indexes"
dbsetindex('TEST_TABLE')
? "Set Order to 1 :", OrdSetFocus(1)
? "Seek :", dbSeek( "000100002" )
? "found() :", found()
? "Recno(),bof(),eof() :", recno(), bof(), eof()
? "dbUnLock() :", dbUnLock()
? "RLock(), dbRLockList:", rlock(), sr_showVector( dbRLockList() )
? "Writes to the WA :", FIELD->DESCR := "Hello, SQL!", FIELD->PERCENT := 23.55
? "dbCommit() :", dbCommit()
? " "
? "Press any key to browse()"
inkey(0)
clear
? "Order 1, key is :", OrdSetFocus(1), ordKey()
? "TOP Scope :", OrdScope( 0 )
? "BOTTOM Scope :", OrdScope( 1 )
? "Press any key to browse() with another index and scope"
inkey(0)
dbGoTop()
clear
browse(row()+1,1,row()+20,80)
clear
DbGoBottom()
alert("Recno antes de deletar os registros: " + str(recno()) )
&& ---------------- se comentar esse bloco aqui o problema desaparece -----------------
if trava()
delete
unlock
DbGoBottom()
delete
DbUnlock()
else
alert("Nao foi possivel bloquear o Registro...!")
endif
&& -------------------------------------------------------------------------------------
DbGoBottom()
alert( "Recno depois de deletar os 2 registros: " + str(recno()) )
? "Order 1, key is :", OrdSetFocus(1), ordKey()
&& ---------------- ou se não utilizar scope também não acontece o erro ----------------------
set scope to '0001' , '9999'
? "TOP Scope :", OrdScope( 0 )
? "BOTTOM Scope :", OrdScope( 1 )
? "Press any key to browse() with another index and scope"
inkey(0)
dbGoTop()
clear
browse(row()+1,1,row()+20,80)
SET SCOPE TO && Desativa ESCOPO
DbGoBottom()
if trava()
alert('vou apagar o registro: ' + str(recno()))
delete
DbUnlock()
endif
DbGoBottom()
alert( "Recno depois de deletar 3º registro: " + str(recno()) )
? "Pressione qualquer tecla para incluir um novo registro registro()"
inkey(0)
if inclui()
Replace ID_EMPRESA with '0001'
poecodigo({'ID_EMPRESA','CODE_ID'},5)
replace DESCR with dtoc( date() ) + " - " + time()
Replace DAYS with (RECORDS_IN_TEST - i)
Replace DATE_LIM with date()
Replace ENABLE with .T.
Replace OBS with "This is a memo field. Seconds since midnight : " + alltrim(str(seconds()))
DbCommit()
endif
Return NIL
**************
func trava
**************
private tt
for tt=1 to 10
if rlock()
exit
endif
inkey(0.1)
next tt
if !rlock()
* alert('Registro do arquivo: ' + dbf() + ';Bloqueado em outro terminal.. !')
alert('Registro ' + if(UsaSgbd,'da Tabela: ','do Arquivo: ') + alias() + ';Esta Sendo Utilizado Em Outro Terminal,;' + ;
'Libere o Registro para continuar...')
endif
return rlock()
***************
func inclui
***************
private ordem,tt
ordem = indexord()
for tt=1 to 10
append blank
alert('Recno no append blank: ' + str(recno()))
if !neterr()
exit
endif
inkey(0.1)
next tt
if neterr()
alert( if(UsaSgbd,'Tabela ',' Arquivo ') + ' Bloqueado por Outro Usuario - NÆo e poss¡vel incluir registros !')
endif
return !neterr()
*******************
procedure PoeCodigo
*******************
local cCampoTemp
private cCampoAux
para campo,tama,OrdemPara,MemoriaPara
OrdemPara = if(pcount()>2,OrdemPara,1)
MemoriaPara = if(pcount()>3,MemoriaPara,.t.)
cCampoAux = ''
if type('campo') = 'A' && Aqui testa para verificar se tem mais de um campo a chave
for xyz = 1 to len(campo) - 1
cCampoTemp = campo[xyz]
cCampoAux += &cCampoTemp.
next xyz
campo = campo[len(campo)]
endif
m->registro = recno()
m->ordem = indexord()
m->tama = tama
set order to ordempara
alert('Recno do inclui: ' + str(recno()))
do while .t.
DbGoBottom()
ProvAux = strzero(val(&campo) + 1,m->tama)
seek cCampoaux + ProvAux
if found()
if empty(&campo.) && Coloquei esse bloco de codigo para evitar o loop
IF trava() &&rlock() && enterno quando o valor do registro era em branco.
replace &campo. with ProvAux
endif
endif
loop
else
if CodigoUnico()
exit
endif
endif
enddo
DbGoto( m->registro )
set order to m->ordem
return
********************
function codigounico
********************
DbGoto( m->registro )
if trava() && rlock()
replace &campo. with ProvAux
endif
DbCommit()
seek cCampoAux + ProvAux
* alert('Registro: ' + str(m->Registro) +';Recno: ' + str(recno()) )
if found() .and. m->registro = recno()
return .t.
endif
return .f.
/*------------------------------------------------------------------------*/
#include "connect.prg"
/*------------------------------------------------------------------------*/
Anderson Camilo
Erro no DbGoBottom() / SQLRDD
Anderson eu testei aki e não sei pq ocorre o problema... analisei via debug e não consegui entender tb... sou novato em sqlrdd infelizmente, desculpe...
Talvez o Leo consiga te ajudar ou outro colega... mas eu vou testar a noite com mais calma se tiver alguma novidade t falo.
[]´s
Talvez o Leo consiga te ajudar ou outro colega... mas eu vou testar a noite com mais calma se tiver alguma novidade t falo.
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
andersoncamilo
- Usuário Nível 3

- Mensagens: 103
- Registrado em: 22 Ago 2004 11:54
Erro no DbGoBottom() / SQLRDD
Bom dia
Pessoal consegui resolver o problema coma ajuda do Luiz Culik, da seguinte forma:
delete
commit
unlock
sr_dbrefresh() ou um dbgotop()
Obrigado pela ajuda de todos
Anderson Camilo
Pessoal consegui resolver o problema coma ajuda do Luiz Culik, da seguinte forma:
delete
commit
unlock
sr_dbrefresh() ou um dbgotop()
Obrigado pela ajuda de todos
Anderson Camilo
Erro no DbGoBottom() / SQLRDD
Vlw Anderson por compartilhar, q bom q conseguistes... em q lugar do código vc colocou este trecho q mencionastes...
[]´s
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
andersoncamilo
- Usuário Nível 3

- Mensagens: 103
- Registrado em: 22 Ago 2004 11:54
Erro no DbGoBottom() / SQLRDD
Fladimir
O Luiz falou que sempre após um "delete" deve se usar um commit, e depois do unlock usar Sr_dbrefresh() ou um dbgotop().
Anderson Camilo
O Luiz falou que sempre após um "delete" deve se usar um commit, e depois do unlock usar Sr_dbrefresh() ou um dbgotop().
Anderson Camilo
Erro no DbGoBottom() / SQLRDD
Entendi... seria então tipo uma particularidade da ferramenta SQLRDD para trabalhar sem erros...
Obrigado por compartilhar conosco...
[]´s
Obrigado por compartilhar conosco...
[]´s
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
Mário Isa
- Usuário Nível 4

- Mensagens: 907
- Registrado em: 07 Jul 2004 13:54
- Localização: Ilha Solteira-sp
Erro no DbGoBottom() / SQLRDD
Bom dia.
Como estou procurando uma solução para tentar utilizaro mysql estou vindo aqui para algumas tentativas.
No código do andersoncamilo o que está tentando abrir ali ?
Um mysql ?
Um firebird ?
Um dbf ?
Com indices .CDX
Se eu criar um banco SQL eu consigo me conectar utilizando aqueles mesmos comandos ?
Obrigado.
Mário
Como estou procurando uma solução para tentar utilizaro mysql estou vindo aqui para algumas tentativas.
No código do andersoncamilo o que está tentando abrir ali ?
Um mysql ?
Um firebird ?
Um dbf ?
Com indices .CDX
Se eu criar um banco SQL eu consigo me conectar utilizando aqueles mesmos comandos ?
Obrigado.
Mário
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Erro no DbGoBottom() / SQLRDD
Oi Mário, no HMG também você pode ver mysql e outros RDDs, veja em:
C:\hmg.3.1.1\SAMPLES\MYSQL.1
C:\hmg.3.1.1\SAMPLES\MYSQL.2
C:\hmg.3.1.1\SAMPLES\MYSQL.3
C:\hmg.3.1.1\SAMPLES\RDD.SQL\mysql
C:\hmg.3.1.1\SAMPLES\MYSQL.1
C:\hmg.3.1.1\SAMPLES\MYSQL.2
C:\hmg.3.1.1\SAMPLES\MYSQL.3
C:\hmg.3.1.1\SAMPLES\RDD.SQL\mysql
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Erro no DbGoBottom() / SQLRDD
Na minha opinião, com certeza seria menos penoso. Mas em HMG ainda estão gatinhando com LETODB. O único tópico que fala sobre LETODB é: http://www.hmgforum.com/viewtopic.php?f ... 5&start=20. Eu não testei, mas acredito que é algo que vale a pena conhecer. A questão que em HMG precisa converter a LIB para .A
Neste artigo tem um utilitário que faz isso (também não testei).
Neste artigo tem um utilitário que faz isso (também não testei).
Um clip-abraço !
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Erro no DbGoBottom() / SQLRDD
Mario,
O LetodDB, é uma ótima solução, até hoje tenho sistema rodando com ele, pequeno mais tenho.
O Mysql, tem uma particularidade nas licença de uso, fique esperto quanto a isso.
Qualquer coisa que optar que não seja o LetoDB na família dos SQL você pode usar o SQLRDD, mas pense bem antes de usar, você vira refém dele depois que se torna dependente dele, e para evoluir com outras possibilidade de compilador tem que sempre ver se o SQLRDD pode evoluir junto ou não.
Agora a melhor escolha que você vai fazer vai ser depois que você testar cada um desses, analisar todas seus problemas e ver qual deles supre todas suas necessidades, perco um tempo fazendo isso agora e nunca mais fique na duvida.
Particularmente, se eu tivesse que escolher hoje, eu partiria para PostgreSQL( lib da contrib ).
O LetodDB, é uma ótima solução, até hoje tenho sistema rodando com ele, pequeno mais tenho.
O Mysql, tem uma particularidade nas licença de uso, fique esperto quanto a isso.
Qualquer coisa que optar que não seja o LetoDB na família dos SQL você pode usar o SQLRDD, mas pense bem antes de usar, você vira refém dele depois que se torna dependente dele, e para evoluir com outras possibilidade de compilador tem que sempre ver se o SQLRDD pode evoluir junto ou não.
Agora a melhor escolha que você vai fazer vai ser depois que você testar cada um desses, analisar todas seus problemas e ver qual deles supre todas suas necessidades, perco um tempo fazendo isso agora e nunca mais fique na duvida.
Particularmente, se eu tivesse que escolher hoje, eu partiria para PostgreSQL( lib da contrib ).
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
