Página 1 de 1

Usando tabelas mdb

Enviado: 01 Fev 2011 19:07
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.

Re: Usando tabelas mdb

Enviado: 01 Fev 2011 21:10
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

Re: Usando tabelas mdb

Enviado: 01 Fev 2011 21:28
por asimoes
Completando,

Existe alguma função do harbour para acesso a SQL Server Microsoft?

Re: Usando tabelas mdb

Enviado: 02 Fev 2011 00:08
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.

Usando tabelas mdb

Enviado: 25 Jun 2011 19:18
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

Usando tabelas mdb

Enviado: 26 Jun 2011 00:50
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