Usando tabelas mdb

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Usando tabelas mdb

Mensagem por Itamar M. Lins Jr. »

Ola!
Apenas para deixar registrado.
Precisei acessar e importar umas tabelas grandes em MDB Access, usando o Harbour SVN 2.1 RDDSQL + SQLMIX

Código: Selecionar todos

***********************************
Static Function ImportaOrdemCompras
***********************************
*
*
Local n:=0

cRdd := RDDSETDEFAULT( "SQLMIX" )
FechaDb('oc')
AbreDb('OrdemCompras.dbf','oc',.f.)
zap

nConn := RDDINFO( RDDI_CONNECT, { "ODBC", "DBQ=C:\integro\NCX\NCX.MDB;Driver={Microsoft Access Driver (*.mdb)}" } )

IF nConn == 0
   Msginfo( "Não conectado ao servidor: ", RDDINFO( RDDI_ERRORNO ), RDDINFO( RDDI_ERROR ) )
   RETURN
ENDIF

DBUSEAREA( .T.,"SQLMIX", "select * from Compra", "nct" )
nct->(DbGoTop())

Do While nct->(!eof())
	Incluir('oc')

   oc->numero     := strzero(nct->id_CompraOrdem,6)
   oc->cod_fornec := strzero(nct->id_Fornecedor,6)
   oc->cod_fazend := strzero(nct->id_Propriedade,6)
   oc->tipopgto   := str(nct->tipopagamento,1)
  	oc->data       := nct->data
  	oc->banco      := str(nct->id_banco,3)
  	oc->agencia    := str(nct->id_agenciabancaria,5)
  	oc->conta      := str(nct->id_contacorrente,5)
 	oc->cheque     := str(nct->id_numerocheque,10)
  	oc->nf_oc      := nct->NumeroNotaFiscal
  	oc->valor      := nct->ValorUnitario
  	oc->quantidade := nct->quantidade
  	oc->total      := nct->valortotal

 	nct->(DbSkip())
	
EndDo
FechaDb('nct')
FechaDb('oc')
RddInfo(RDDI_DISCONNECT)
AbreDb('ordemcompras.dbf','oc',.t.)
RDDSETDEFAULT( cRdd )
Simples assim!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Usando tabelas mdb

Mensagem por asimoes »

Itamar,

Muito bom o exemplo. Se for possível informe também as funções AbreDb, FechaDb e Incluir que estão informadas no exemplo.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Usando tabelas mdb

Mensagem por asimoes »

Completando,

Existe alguma função do harbour para acesso a SQL Server Microsoft?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Usando tabelas mdb

Mensagem por Itamar M. Lins Jr. »

Ola!

AbreDb é dbUseArea, FechaDb é dbCloseArea, e incluir é append.
Quanto a MSQL, não achei.
Tem Oracle via OCI, PGSQL, MySQL, FB, via ODBC quem sabe pode conseguir algo.


Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Usando tabelas mdb

Mensagem por fladimir »

Não consegui enteder...

Compilei assim:

Código: Selecionar todos

hbmk2 mdb.prg -lrddsql
blz gerou o EXE

ao rodar da erro:

Código: Selecionar todos

Error DBCMD/1015  Argument error: RDDSETDEFAULT
Called from RDDSETDEFAULT(0)
Called from IMPORTAORDEMCOMPRAS(7)
O q esqueci....

Sds..
Sucesso!!!
:)Pos
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.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Usando tabelas mdb

Mensagem por fladimir »

Resolvi de outra forma, utilizando a lib.... RDDADO, achei na pasta examples do Harbour

o Fonte ficou assim....

Código: Selecionar todos

#include "adordd.ch"

REQUEST ADORDD

PROCEDURE Main()

   SET DATE ANSI
   SET CENTURY ON

   USE ( hb_dirBase() + "cliente.mdb" ) VIA "ADORDD" TABLE "ContasRec"

  Cliente->(dbgobottom())
  Cliente->( Flock())
  Cliente->Limite         := 1000
  Cliente->EstadoCivil  := "CASADO"
  DbCommit()
  DbUnlock()
  USE
RETURN
Percebam q usei como se estivesse trabalhando com DBF, achei muito legal e resolveu meu problema, agora consigo manipular MDB tb sem problemas...

Sds.

Sucesso!!!

:)Pos
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.
Responder