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.