Página 1 de 1

Erro em ADORDD Harbour 3.0

Enviado: 28 Ago 2011 20:22
por JoséQuintas
Estou tentando usar a ADORDD do Harbour 3.0.
No uso recebo este erro:

Error BASE/1003 Variable does not exist: IDINSTANCI
Called from (b)FIELDBLOCK(0)
Called from TBROWSE:DOCONFIGURE(0)
Called from TBROWSE:STABILIZE(0)
Called from TBROWSE:FORCESTABLE(0)
Called from BROWSE(0)
Called from MAIN(14)

O nome do campo do arquivo é IDINSTANCIA, e ao que parece, o Harbour limita a 10 caracteres.
Alguma idéia diferente de modificar a estrutura da tabela?

Erro em ADORDD Harbour 3.0

Enviado: 15 Abr 2013 03:34
por dbsh
hoje precisei trabalhar com MySQL usando a função FieldName(0, e me deparei com este problema, do campo com mais de 10 caracteres, a função tava truncando o nome, pesquisei e não achei solução rápida, bem resolvi na base da RAT=(Recurso Altamente Técnico)=Gambiarra.

Troquei todas as chamadas de FieldName() e Field() para FieldNameExt() que criei, se o Driver corrente for ADORDD chama a função ADO_FIELDNAME(), senão FieldName() do Harbour

Código: Selecionar todos

#define TESTE
//#include 'boni_cmd.ch'
#include "adordd.ch"
#define WA_RECORDSET   1

REQUEST ADORDD

#ifdef TESTE
procedure test()

USE sogec alias "empresa" VIA "ADORDD" TABLE "empresa" MYSQL ;
    FROM "127.0.0.1" USER "root" PASSWORD "root"

BoniBrowse() //Browse() modifcado

return
#endif


FUNCTION FieldNameExt( nField, nAlias )
LOCAL sRet, sAlias
LOCAL nCurrArea

DEFAULT nAlias TO Alias() //parâmetro opcional

nCurrArea := Select()
sele (nAlias)
sAlias := Alias()

IF ValType( nAlias ) = "N"
    IF nCurrArea = nAlias
        nCurrArea := 0
    ENDIF
ELSE
    nAlias := Select()
    IF nCurrArea = nAlias
        nCurrArea := 0
    ENDIF
ENDIF

IF RddName() == "ADORDD"
    sRet := ADO_FIELDNAME( nField, nAlias )
ELSE
    sRet := (sAlias)->(FieldName( nField ))
ENDIF

IF nCurrArea > 0
    DbSelectArea( nCurrArea )
ENDIF

RETURN sRet

STATIC FUNCTION ADO_FIELDNAME( nField, nAlias )
LOCAL cFieldName
LOCAL oRecordSet

DEFAULT nAlias TO Select() //parâmetro opcional

oRecordSet := USRRDD_AREADATA( nAlias )[ WA_RECORDSET ]

BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
    cFieldName := oRecordSet:Fields( nField - 1 ):Name
RECOVER
    cFieldName := ''
END SEQUENCE

RETURN cFieldName


Erro em ADORDD Harbour 3.0

Enviado: 15 Abr 2013 11:15
por Itamar M. Lins Jr.
Já tentou usar SQLMIX ?
Eu usei aqui algumas vezes com sucesso.

Código: Selecionar todos

cRdd  := RDDSETDEFAULT( "SQLMIX" )
nConn := RDDINFO( 1001, { "ODBC", "Driver={SQL Server Native Client 10.0};Server=localhost;database=LRXX;Uid=xyz;Pwd=xyz" })

DBUSEAREA( .T.,"SQLMIX", "select * from dbo.xyz", "xx" )

Saudações,
Itamar M. Lins Jr.

Erro em ADORDD Harbour 3.0

Enviado: 15 Abr 2013 12:11
por dbsh
ainda não, foi minha primeira experiência com MySQL no Harbour, usei pela facilidade de uso, a performance é melhor?

Erro em ADORDD Harbour 3.0

Enviado: 15 Abr 2013 13:11
por dbsh
Esqueci de dar o crédito: A função ADO_FIELDNAME() foi retirada de ADORDD.PRG, com algumas modificações.