Página 1 de 1

Problemas com a hbFbird

Enviado: 28 Jan 2016 09:59
por viniciuspc
Olá a todos! ...depois de um longo tempo sem postar nada aqui...

Aparentemente encontrei 2 problemas no Harbour 3.0 (oficial, estável) nas funções FBCreateDB e FBQuery! existentes na contrib hbfbird!

A função FBQuery não aceita strings com mais de 255 caracteres! OBS : este problema não ocorre na FBExecute!
E a função FBCreateDB mantem o banco aberto em memoria após a criação!

Bom, para tentar resolver os problemas acima, compilei o Harbour 3.4 e o problema da FBQuery foi resolvida! :)Pos
Mas o outro persiste! :(Neg

Talvez ngm tenha percebido porque não precisa deletar o banco criado após o FBCreateDB, mas eu estou neste caso porque trata-se de um banco temporário que vai ser zipado no fim e deve sumir da pasta!

A solução é ter um banco vazio já criado! ai basta copiar para um outro nome e conectar nele...

bom, fica a dica se alguém passar por isto!

Exemplo

FBCreateDB

Código: Selecionar todos

   LOCAL cServer := "localhost:"
   LOCAL cDatabase := "teste.fdb"
   LOCAL cUser := "SYSDBA"
   LOCAL cPass := "masterkey"
   LOCAL nPageSize := 1024
   LOCAL cCharSet := "UTF8"
   LOCAL nDialect := 1

   LOCAL tmp

   hb_vfErase( cDatabase )

   ? tmp := FBCreateDB( cServer + cDatabase, cUser, cPass, nPageSize, cCharSet, nDialect ), FBError( tmp )

   dele file &(cDatabase) && não vai deletar o arquivo...
FBQuery

Código: Selecionar todos

   LOCAL cServer := "localhost:"
   LOCAL cDatabase := "teste.fdb"
   LOCAL cUser := "SYSDBA"
   LOCAL cPass := "masterkey"
   LOCAL nPageSize := 1024
   LOCAL cCharSet := "UTF8"
   LOCAL nDialect := 1

   LOCAL trans, qry

   LOCAL db, x, y
   LOCAL num_cols
   LOCAL columns
   LOCAL fetch_stat
   LOCAL tmp

   hb_vfErase( cDatabase )

   ? tmp := FBCreateDB( cServer + cDatabase, cUser, cPass, nPageSize, cCharSet, nDialect ), FBError( tmp )

   /* Connect rdbms */
   IF HB_ISNUMERIC( db := FBConnect( cServer + cDatabase, cUser, cPass ) )
      ? "Error:", db, FBError( db )
      RETURN
   ENDIF

   IF HB_ISNUMERIC( trans := FBStartTransaction( db ) )
      ? "Error:", trans, FBError( trans )
   ELSE
      ? tmp := FBQuery( db, "create table "+SPACE(255)+" teste (code smallint)", nDialect, trans ), FBError( tmp ) && vai dar erro no HB 3.0
      ? tmp := FBCommit( trans ), FBError( tmp )
   ENDIF

   ? "Status Execute:", tmp := FBExecute( db, 'insert into teste(code) "+SPACE(255)+" values (1)', nDialect ), FBError( tmp ) && este comando não apresenta problemas de tamanho no HB 3.0

   /* Close connection with rdbms */
   ? "Status Close Database:", tmp := FBClose( db ), FBError( tmp )
Estou usando o Harbour 3.0 e MSVC 2010, rodando no Windows 7 com Firebird 1.5!

:xau