Clipper On Line • Ver Tópico - select omitindo campos da tabela em base de dados MySQL

select omitindo campos da tabela em base de dados MySQL

Discussão sobre SQL

Moderador: Moderadores

 

select omitindo campos da tabela em base de dados MySQL

Mensagempor Jairo Maia » 23 Set 2014 13:15

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():
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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

select omitindo campos da tabela em base de dados MySQL

Mensagempor Itamar M. Lins Jr. » 23 Set 2014 14:24

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.

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 507 vezes

select omitindo campos da tabela em base de dados MySQL

Mensagempor dbsh » 24 Set 2014 19:02

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()


#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.
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Avatar de usuário

dbsh
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jul 2004 14:19
Cidade/Estado: ES
Curtiu: 2 vezes
Mens.Curtidas: 15 vezes

select omitindo campos da tabela em base de dados MySQL

Mensagempor cjp » 24 Set 2014 23:29

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.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1531
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

select omitindo campos da tabela em base de dados MySQL

Mensagempor Jairo Maia » 25 Set 2014 13:51

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:
DBUSEAREA( .T.,, "SELECT data AS Data,hora AS Horário,acao AS Ação FROM ativ WHERE usuario='"+usus+"'", "athor")
Browse()
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

select omitindo campos da tabela em base de dados MySQL

Mensagempor cjp » 26 Set 2014 21:38

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.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1531
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

select omitindo campos da tabela em base de dados MySQL

Mensagempor Jairo Maia » 27 Set 2014 17:18

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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

select omitindo campos da tabela em base de dados MySQL

Mensagempor cjp » 29 Nov 2014 19:02

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?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1531
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

Anterior



Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro