Estava migrando meus programas que usavam a função MsCreate para a nova FWDbCreate, porém me deparei com um pequeno problema com a nova função. A função MSCreate retorna .T. se a tabela pode ser criada, e a nova função não retorna nada. Como faço para identificar se a operação de criar a tabela temporária ocorreu sem erros?
Tentei usando fError() mas não deu muito certo porque ela pode trazer códigos de erro de funções anteriores ao que estou trabalhando que também não deu certo.
https://tdn.totvs.com/display/public/framework/FWDBCreate
https://tdn.totvs.com/pages/releaseview.action?pageId=6814994
Cirilo,
Para verificar se a tabela realmente foi criada, você pode usar uma função que verifique a existência da tabela.
#include "protheus.ch"
//-------------------------------------------------------------------
/*/{Protheus.doc} createTableTest
Exemplo de uso da FWDBCreate
@author Daniel Mendes
@since 05/09/2022
@version 1.0
/*/
//-------------------------------------------------------------------
user function createTableTest()
local cTable as character
local aStruct as array
local cDriver as character
local lOk as logical
cTable := "TESTE"
aStruct := {{"CODIGO", "N", 10, 0}, {"DESCRICAO", "C", 255, 0}}
cDriver := "TOPCONN"
FWDBCreate(cTable, aStruct, cDriver, .T.)
lOk := TCCanOpen(cTable)
return
Como a tabela foi criada no banco de dados, posso usar a função TCCanOpen para verificar se a mesma existe.
Documentação: https://tdn.totvs.com/display/tec/TCCanOpen
Entendi, só mais uma dúvida e se a tabela for CTree ? vou ter que ver se o arquivo existe ?
Para CTREE você poderia usar a função FILE e verificar a existência do arquivo. Mas recomendo fortemente deixar de usar arquivos CTREE.
Mais uma vez muito obrigado, entendo a recomendação sobre ctree, mas eu continuo usando porque a diferença de desempenho (em todos os testes que já fiz aqui) é absurda. O Ctree chega a ser 10x mais rápido que o SQL ou SQL_Lite, por isso ainda uso como tabelas temporárias.