Erro em ADORDD Harbour 3.0

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Erro em ADORDD Harbour 3.0

Mensagem 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?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Erro em ADORDD Harbour 3.0

Mensagem 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

010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
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

Erro em ADORDD Harbour 3.0

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Erro em ADORDD Harbour 3.0

Mensagem por dbsh »

ainda não, foi minha primeira experiência com MySQL no Harbour, usei pela facilidade de uso, a performance é melhor?
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Erro em ADORDD Harbour 3.0

Mensagem por dbsh »

Esqueci de dar o crédito: A função ADO_FIELDNAME() foi retirada de ADORDD.PRG, com algumas modificações.
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Responder