Página 2 de 2
select omitindo campos da tabela em base de dados MySQL
Enviado: 23 Set 2014 13:15
por Jairo Maia
Olá Itamar,
Itamar M. Lins Jr. escreveu:Então não é fix do Przemek ?
Na minha opinião não. É apenas uma sugestão do Franček Prijatelj pedindo uma correção na função FieldName(). Porém, acho que a função FieldName() reconhece a constante:
#define HB_SYMBOL_NAME_LEN <n>, veja o fonte da função FieldName():
Código: Selecionar todos
HB_FUNC( FIELDNAME )
{
char * szName;
AREAP pArea = ( AREAP ) hb_rddGetCurrentWorkAreaPointer();
USHORT uiFields, uiIndex = hb_parni( 1 );
if( pArea && uiIndex )
{
if( SELF_FIELDCOUNT( pArea, &uiFields ) == SUCCESS &&
uiIndex <= uiFields )
{
szName = ( char * ) hb_xgrab( pArea->uiMaxFieldNameLength + 1 );
szName[ 0 ] = '\0';
SELF_FIELDNAME( pArea, uiIndex, szName );
hb_retc_buffer( szName );
return;
}
/* This is not Clipper compatible! - David G. Holm
*
hb_errRT_DBCMD( EG_ARG, EDBCMD_FIELDNAME_BADPARAMETER, NULL, HB_ERR_FUNCNAME );
*/
}
hb_retc( NULL );
}
Observe a linha 12:
szName = ( char * ) hb_xgrab( pArea->uiMaxFieldNameLength + 1 )
Itamar M. Lins Jr. escreveu:Chamar fcount() toda hora em uma tabela muito grande cai a performance.
Sim! Sempre que uma função a usar num laço pode retornar um valor fixo, também coloco numa variável.
select omitindo campos da tabela em base de dados MySQL
Enviado: 23 Set 2014 14:24
por Itamar M. Lins Jr.
Pois é, nos meus parcos conhecimentos "C"sistico!
Ele viu que o erro era na tal, contrib/rddsql/sqlbase.c. Não um problema da função fieldname.
Tanto é que ele(Franček Prijatelj) agradece em outro post.
Código: Selecionar todos
2014-09-23 10:47 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* contrib/rddsql/sqlbase.c
! set maximum field size to HB_SYMBOL_NAME_LEN
* ChangeLog.txt
* removed TABs and format some of recent entries
best regards
Przemek
********************************************************************************************************
HI Przemek
Thanks.
There is another problem with Sql - null values.
While rddInfo( RDDI_CONNECT, { "ODBC",cConnStr} ) works fine, browse() just drops off columns with some null values.
rddInfo( RDDI_CONNECT, { "SQLITE3", "test.db" } ) just throws an error.
Error SDDSQLITE3/1902 Invalid field type: select * from OrderAddress (DOS Error 5)
IMHO null values should be converted to default DBF values.
Thanks you again
T+
Itamar M. Lins Jr.
select omitindo campos da tabela em base de dados MySQL
Enviado: 24 Set 2014 19:02
por dbsh
Resolvi meu problema de campo com mais de 10 caracteres assim
Não sei qual RDD você esta usando, se for com ADO, pode usar assim
Troque as chamadas de FiledName() para FieldNameExt()
Código: Selecionar todos
#define WA_RECORDSET 1
FUNCTION FieldNameExt( nField, nAlias )
LOCAL sRet
DEFA nAlias TO Select()
IF RddName() == "ADORDD" //coloque o RDD que você esta usando
sRet := ADO_FIELDNAME( nField, nAlias )
ELSE
sRet := FieldName( nField )
ENDIF
RETURN sRet
STATIC FUNCTION ADO_FIELDNAME( nField, nAlias )
LOCAL cFieldName
LOCAL oRecordSet
DEFA nAlias TO Select()
oRecordSet := USRRDD_AREADATA( nAlias )[ WA_RECORDSET ]
BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
cFieldName := oRecordSet:Fields( nField - 1 ):Name
RECOVER
cFieldName := ''
END SEQUENCE
RETURN cFieldName
Esta parte foi retirada da minha biblioteca se der erro avise, não testei.
select omitindo campos da tabela em base de dados MySQL
Enviado: 24 Set 2014 23:29
por cjp
Meus caros amigos,
Estou acompanhando as discussões de vocês sobre este tema, mas estou tentando muito pouco (ou quase nada), pois elas são de altíssimo nível.
Não é ADO que eu uso, mas o RDDI.
Gostaria de saber o que eu preciso fazer, especificamente, pra resolver o meu problema.
select omitindo campos da tabela em base de dados MySQL
Enviado: 25 Set 2014 13:51
por Jairo Maia
Olá Inácio,
Tenho muito pouco a opinar sobre MySQL, mas já tentou usar a cláusula AS para saber como a função Browse() se comporta?
Exemplo:
Código: Selecionar todos
DBUSEAREA( .T.,, "SELECT data AS Data,hora AS Horário,acao AS Ação FROM ativ WHERE usuario='"+usus+"'", "athor")
Browse()
select omitindo campos da tabela em base de dados MySQL
Enviado: 26 Set 2014 21:38
por cjp
Testei agora a AS, mas não alterou em nada. Pelo que pesquisei, ela apenas muda o nome da coluna, não é? Mas continua não aparecendo o campo inteiro.
select omitindo campos da tabela em base de dados MySQL
Enviado: 27 Set 2014 17:18
por Jairo Maia
Olá Inácio,
cjp escreveu:Testei agora a AS, mas não alterou em nada.
Pois é... Apenas achei que isso poderia mudar algum comportamento do TBrowseDB() usada pela função Browse(). Mas vamos aguardar então outras dicas de algum colega.
select omitindo campos da tabela em base de dados MySQL
Enviado: 29 Nov 2014 20:02
por cjp
Alguém teria alguma solução para me ajudar com isto?
De todos os testes que já fiz até agora, percebi que ele fixa o tamanho da coluna de acordo com o número de caracteres do primeiro item consultado. Então, por exemplo, se o tamanho da coluna na tabela é chr(40), ao dar um select, se o primeiro retornado for "JOÃO DA SILVA" (13 caracteres), todos os demais itens desta coluna ficarão com 13 caracteres.
Existe alguma solução para isto?