PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → Multilink Database by Wx Soluções - Driver Nativo para Firebird para Windev, Webdev e Windev Mobile
Multilink Database by Wx Soluções - Driver Nativo para Firebird para Windev, Webdev e Windev Mobile
Débuté par Boller, 24 oct. 2022 21:52 - 8 réponses
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 24 octobre 2022 - 21:52
Boa tarde Pessoal,

A esplanação abaixo é o exemplo de uso do Multilink Database by Wx Soluções - Driver Nativo para Firebird para Windev, Webdev e Windev Mobile. Caso tenha interesse em adquirir o valor é de R$ 500,00 ou $ 100,00 dolares / Euros pelo telefone +55 41 99949 1800 ou pelo e-mail adrianoboller@gmail.com.

PARA PEGAR O RETORNO CONVERTA O JSON EM STRUCT USANDO ESSE UTILITARIO ONLINE DA PCSOFT

https://formation.pcscloud.net/wjson_web/FR/index.awp

DAI SÓ USAR UM LOOP E PREENCHER, VEJA O EXEMPLO 8

Exemplo 1 - Select normal

resultado is JSON

FIREBIRD_CLIENT.CONFIGURE("localhost", 3050, "SYSDBA", "masterkey", "C:\MY Projets\DB_Firebird\DB_EXEMPLO.FDB")

IF FIREBIRD_CLIENT.BEGIN_CONNECT() = True

IF FIREBIRD_CLIENT.SQL_QUERY("select * from alunos;") = True THEN

resultado = FIREBIRD_CLIENT.DATA

END

END

FIREBIRD_CLIENT.END_CONNECT();


Exemplo 2 - Select com filtro

resultado is JSON

nomealuno is string = "Adriano Boller"

FIREBIRD_CLIENT.CONFIGURE("localhost", 3050, "SYSDBA", "masterkey", "C:\MY Projets\DB_Firebird\DB_EXEMPLO.FDB")

IF FIREBIRD_CLIENT.BEGIN_CONNECT() = True THEN

FIREBIRD_CLIENT.SET("@Nome",nomealuno)

IF FIREBIRD_CLIENT.SQL_QUERY("select * from alunos where nome like @Nome;") = True THEN

resultado = FIREBIRD_CLIENT.DATA

END

END

FIREBIRD_CLIENT.END_CONNECT();


Exemplo 3 - Insert com erro para pegar o erro do banco

resultado is JSON

nomealuno is string = "Marcos"

FIREBIRD_CLIENT.CONFIGURE("localhost", 3050, "SYSDBA", "masterkey", "C:\MY Projets\DB_Firebird\DB_EXEMPLO.FDB")

IF FIREBIRD_CLIENT.BEGIN_CONNECT() = True THEN

FIREBIRD_CLIENT.SET("@Nome",nomealuno)

IF FIREBIRD_CLIENT.SQL_EXEC("insert into alunos values 1(3, @Nome);") = True THEN

resultado = FIREBIRD_CLIENT.DATA

ELSE

Info(FIREBIRD_CLIENT.MSG)

END

END

FIREBIRD_CLIENT.END_CONNECT();


Exemplo 4 - Insert ok

resultado is JSON

nomealuno is string = "Rafael Boller"

FIREBIRD_CLIENT.CONFIGURE("localhost", 3050, "SYSDBA", "masterkey", "C:\MY Projets\DB_Firebird\DB_EXEMPLO.FDB")

IF FIREBIRD_CLIENT.BEGIN_CONNECT() = True THEN

FIREBIRD_CLIENT.SET("@Nome",nomealuno)

IF FIREBIRD_CLIENT.SQL_EXEC("insert into alunos values (4, @Nome);") = True THEN

resultado = FIREBIRD_CLIENT.DATA

ELSE

Info(FIREBIRD_CLIENT.MSG)

END

END

FIREBIRD_CLIENT.END_CONNECT();


Exemplo 5 - Update ok

nomealuno is string = "Juliana Boller"

FIREBIRD_CLIENT.CONFIGURE("localhost", 3050, "SYSDBA", "masterkey", "C:\MY Projets\DB_Firebird\DB_EXEMPLO.FDB")

IF FIREBIRD_CLIENT.BEGIN_CONNECT() = True THEN

FIREBIRD_CLIENT.SET("@Nome",nomealuno)

IF FIREBIRD_CLIENT.SQL_EXEC("update alunos set nome = @nome where aluno_id = 2;") = True THEN

Info("OK")

ELSE

Info(FIREBIRD_CLIENT.MSG)

END

END

FIREBIRD_CLIENT.END_CONNECT();


Exemplo 6 - Delete ok

FIREBIRD_CLIENT.CONFIGURE("localhost", 3050, "SYSDBA", "masterkey", "C:\MY Projets\DB_Firebird\DB_EXEMPLO.FDB")

IF FIREBIRD_CLIENT.BEGIN_CONNECT() = True THEN

FIREBIRD_CLIENT.SET("@id",3)

IF FIREBIRD_CLIENT.SQL_EXEC("delete from alunos where aluno_id = @id;") = True THEN

Info("OK")

ELSE

Info(FIREBIRD_CLIENT.MSG)

END

END

FIREBIRD_CLIENT.END_CONNECT();


Exemplo 7 - Transaction Commit / Rollback

nomealuno is string = "Alice Boller"

FIREBIRD_CLIENT.CONFIGURE("localhost", 3050, "SYSDBA", "masterkey", "C:\MY Projets\DB_Firebird\DB_EXEMPLO.FDB")

IF FIREBIRD_CLIENT.BEGIN_CONNECT() = True THEN

FIREBIRD_CLIENT.BEGIN_TRANSACTION()

FIREBIRD_CLIENT.SET("@Nome",nomealuno)

IF FIREBIRD_CLIENT.SQL_EXEC("update alunos set nome = @nome where aluno_id = 4;") = True THEN

IF FIREBIRD_CLIENT.COMMIT_TRANSACTION(False) = True // True se der erro de commit chama o rollback automaticamente IF FIREBIRD_CLIENT.COMMIT_TRANSACTION(True) = True

Info("OK")

ELSE

FIREBIRD_CLIENT.ROLLBACK_TRANSACTION()

END

ELSE

Info(FIREBIRD_CLIENT.MSG)

END

END

FIREBIRD_CLIENT.END_CONNECT();


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modifié, 24 octobre 2022 - 22:00
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 24 octobre 2022 - 21:57
EXEMPLO 8 - COM STRUCT

PARA PEGAR O RETORNO CONVERTA O JSON EM STRUCT USANDO ESSE UTILITARIO ONLINE DA PCSOFT

https://formation.pcscloud.net/wjson_web/FR/index.awp

STRESULT is Structure
NOMEUSUARIO is string
SENHA is string
SIGLA is string
BUSCAMERCADORIA is string
TEMPOPESQUISA is int
RELATORIOECF is string
IP is string
STATUS is int
INATIVIDADE is int
AVISABACKUP is string
AVISAMINIMO is string
AVISAPONTOPEDIDO is string
NIVELDEPRECO is int
TAMANHOFONTEF1 is int
AVISAPAGAR is string
AVISAPRODUCAO is string
AVISAOSABERTA is string
AVISAVALIDADE is string
MOSTRALUCROORCAMENTO is string
MOSTRAVENDAFUTURA is string
VENDAAUTOMATICA is string
VERIFICACANCELAMENTOCONVENIO is string
ATIVO is string
AVISANFS is string
VENDEDORPADRAO is int
END

arrResultat is array of STRESULT

STC_tarefa = "Aguarde Iniciando Importação ... DBCADUSU"

WinRedraw()

HClose(CADUSU)
HCreation(CADUSU)

sFiller is string
Resultado is JSON
i is int
nQtdeReg is int

PROGBAR_01 = 0

FIREBIRD_CLIENT.CONFIGURE("localhost", 3050, "SYSDBA", "masterkey", EDT_Banco)

IF FIREBIRD_CLIENT.BEGIN_CONNECT() = True THEN

IF FIREBIRD_CLIENT.SQL_QUERY("SELECT COUNT(*) AS MAXIMO FROM DBCADUSU;") = True THEN
Resultado = FIREBIRD_CLIENT.DATA
nQtdeReg = Resultado[1].MAXIMO
PROGBAR_01..MaxValue = nQtdeReg // QUANT DE REGISTROS DA TABELA
EDT_Maximo = nQtdeReg
END

STC_tarefa = "Iniciando a Leitura da Tabela DBCADUSU Aguarde..."
WinRedraw()

IF FIREBIRD_CLIENT.SQL_QUERY("select * from DBCADUSU;") = True THEN

sRetJSON is Buffer = FIREBIRD_CLIENT.DATA

Deserialize(arrResultat,sRetJSON,psdJSON)

STC_tarefa = "Gravando... Segis_ERP -> CADUSU"
WinRedraw()

FOR i = 1 TO nQtdeReg

//Multitask(1) //Comando para dar um tempo no processamento
//WAIT(10)

PROGBAR_01++
EDT_Lendo = i

HReset(CADUSU)

CADUSU.Nome = arrResultat[i].NOMEUSUARIO

IF CADUSU.Nome = "0" THEN
CONTINUE
END

CADUSU.Apelido = arrResultat[i].NOMEUSUARIO
CADUSU.Senha = arrResultat[i].SENHA
CADUSU.Foto = arrResultat[i].FOTO
CADUSU.CADPFL = arrResultat[i].CADPFL
CADUSU.DescMax = arrResultat[i].DESCMAX
sFiller = arrResultat[i].ATIVO

IF sFiller = "N" THEN
CONTINUE
ELSE
CADUSU.Ativo = 1
END

HAdd(CADUSU,hLockNo)

END

END
END

FIREBIRD_CLIENT.END_CONNECT();

IF nQtdeReg = 0 THEN
TABLE_Importa.COL_FimOK[x] = "Nenhum Registro a Importar(Tabela Vazia)"
ELSE
IF nQtdeReg = HRecNum(CADUSU) THEN
TABLE_Importa.COL_FimOK[x] = "OK - " + HRecNum(CADUSU) + " Registros Importados"
ELSE
TABLE_Importa.COL_FimOK[x] ="ERRO de Importação"
END
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 24 octobre 2022 - 23:23
Bases de dados DB2 by Multilink

Selecionar registros

resultado is JSON

SERVER is string = "LOCALHOST"
USER is string = "ADRIANO"
SENHA is string = "SENHASECRETA"
BASE is string = "DB_BASE"

DB2_CLIENT.CONFIGURE(SERVER,USER,SENHA,BASE)

IF DB2_CLIENT.BEGIN_CONNECT() = True

IF DB2_CLIENT.SQL_QUERY("select * from alunos;") = True THEN

resultado = DB2_CLIENT.DATA

END

END

DB2_CLIENT.END_CONNECT();



Select com filtro protegido com not Sql Inector

resultado is JSON

SERVER is string = "LOCALHOST"
USER is string = "ADRIANO"
SENHA is string = "SENHASECRETA"
BASE is string = "DB_BASE"

nomealuno is string = "Adriano Boller"

DB2_CLIENT.CONFIGURE(SERVER,USER,SENHA,BASE)

IF DB2_CLIENT.BEGIN_CONNECT() = True THEN

DB2_CLIENT.SET("@Nome",nomealuno)

IF DB2_CLIENT.SQL_QUERY("select * from alunos where nome like @Nome;") = True THEN

resultado = DB2_CLIENT.DATA

END

END

DB2_CLIENT.END_CONNECT();



Insert com erro para dar info error

resultado is JSON

SERVER is string = "LOCALHOST"
USER is string = "ADRIANO"
SENHA is string = "SENHASECRETA"
BASE is string = "DB_BASE"

nomealuno is string = "Adriano Boller"

//nomealuno is string = "Marcos"

DB2_CLIENT.CONFIGURE(SERVER,USER,SENHA,BASE)

IF DB2_CLIENT.BEGIN_CONNECT() = True THEN

DB2_CLIENT.SET("@Nome",nomealuno)

IF DB2_CLIENT.SQL_EXEC("insert into alunos values 1(3, @Nome);") = True THEN

resultado = DB2_CLIENT.DATA

ELSE

Info(DB2_CLIENT.MSG)

END

END

DB2_CLIENT.END_CONNECT();



Insert ok

resultado is JSON

SERVER is string = "LOCALHOST"
USER is string = "ADRIANO"
SENHA is string = "SENHASECRETA"
BASE is string = "DB_BASE"

//nomealuno is string = "Adriano Boller"

//nomealuno is string = "Marcos"

nomealuno is string = "Rafael Boller"

DB2_CLIENT.CONFIGURE(SERVER,USER,SENHA,BASE)

IF DB2_CLIENT.BEGIN_CONNECT() = True THEN

DB2_CLIENT.SET("@Nome",nomealuno)

IF DB2_CLIENT.SQL_EXEC("insert into alunos values (4, @Nome);") = True THEN

resultado = DB2_CLIENT.DATA

ELSE

Info(DB2_CLIENT.MSG)

END

END

DB2_CLIENT.END_CONNECT();



Update ok

SERVER is string = "LOCALHOST"
USER is string = "ADRIANO"
SENHA is string = "SENHASECRETA"
BASE is string = "DB_BASE"

//nomealuno is string = "Adriano Boller"

//nomealuno is string = "Marcos"

//nomealuno is string = "Rafael Boller"

nomealuno is string = "Juliana Boller"

DB2_CLIENT.CONFIGURE(SERVER,USER,SENHA,BASE)

IF DB2_CLIENT.BEGIN_CONNECT() = True THEN

DB2_CLIENT.SET("@Nome",nomealuno)

IF DB2_CLIENT.SQL_EXEC("update alunos set nome = @nome where aluno_id = 2;") = True THEN

Info("OK")

ELSE

Info(DB2_CLIENT.MSG)

END

END

DB2_CLIENT.END_CONNECT();



Delete ok

SERVER is string = "LOCALHOST"
USER is string = "ADRIANO"
SENHA is string = "SENHASECRETA"
BASE is string = "DB_BASE"

//nomealuno is string = "Adriano Boller"

//nomealuno is string = "Marcos"

//nomealuno is string = "Rafael Boller"

nomealuno is string = "Juliana Boller"

DB2_CLIENT.CONFIGURE(SERVER,USER,SENHA,BASE)

IF DB2_CLIENT.BEGIN_CONNECT() = True THEN

DB2_CLIENT.SET("@id",3)

IF DB2_CLIENT.SQL_EXEC("delete from alunos where aluno_id = @id;") = True THEN

Info("OK")

ELSE

Info(DB2_CLIENT.MSG)

END

END

DB2_CLIENT.END_CONNECT();



Insert com Transaction

SERVER is string = "LOCALHOST"
USER is string = "ADRIANO"
SENHA is string = "SENHASECRETA"
BASE is string = "DB_BASE"

//nomealuno is string = "Adriano Boller"

//nomealuno is string = "Marcos"

//nomealuno is string = "Rafael Boller"

//nomealuno is string = "Juliana Boller"

nomealuno is string = "Alice Boller"

DB2_CLIENT.CONFIGURE(SERVER,USER,SENHA,BASE)

IF DB2_CLIENT.BEGIN_CONNECT() = True THEN

DB2_CLIENT.BEGIN_TRANSACTION()

DB2_CLIENT.SET("@Nome",nomealuno)

IF DB2_CLIENT.SQL_EXEC("update alunos set nome = @nome where aluno_id = 4;") = True THEN

IF DB2_CLIENT.COMMIT_TRANSACTION(False) = True // True se der erro de commit chama o rollback automaticamente IF FIREBIRD_CLIENT.COMMIT_TRANSACTION(True) = True

Info("OK")

ELSE

DB2_CLIENT.ROLLBACK_TRANSACTION()

END

ELSE

Info(DB2_CLIENT.MSG)

END


END

DB2_CLIENT.END_CONNECT();



PARA LER O JSON CRIE ANTES UMA STRUCT IGUAL O EXEMPLO 8 COM ESSE UTUOITARIO ABAIXO

https://formation.pcscloud.net/wjson_web/FR/index.awp

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 25 octobre 2022 - 18:03
Exemplo de uso do Multilink com DBF

//
PROCEDURE Integra_OmegaPed_Local_Server()

Busca_Variaveis_BD_Server_OmegaPed()

bWFound is boolean

IF InternetConnected() = True THEN
IF HOpenConnection(MyConnection_server_OmegaPed) = True THEN

// Integração do Local (Omega) para Servidor OmegaPed.

dsVendedor is Data Source
IF HDBOpen(dsVendedor,"FoxVend",gsDirVendedor) THEN

// wIndex is string = Replace(gsDirVendedor ,"DBF","CDX") // Abre o Indice do Arquivo
HDBIndex(dsVendedor, "VENDEDOR.CDX", "Codigo")

HReset(dsVendedor)
HReadFirst(dsVendedor)

WHILE HOut(dsVendedor) = False

STC_Status.Caption = "Lendo Vendedor "+dsVendedor.Codigo+"-"+NoSpace(dsVendedor.Nome)

IF dsVendedor.bloqueado = False THEN // Status (Ativo=Desbloqueado)

HReadSeek(t012_vendedor_server,t012_vendedor,dsVendedor.Codigo,hIdentical)
bWFound = HFound(t012_vendedor_server)

t012_vendedor_server.t012_nome = dsVendedor.nome
t012_vendedor_server.t012_vendedor_ok = dsVendedor.bloqueado

IF bWFound THEN
HSave(t012_vendedor_server)
ELSE
t012_vendedor_server.t012_vendedor = dsVendedor.Codigo
HAdd(t012_vendedor_server)
END

END

HReadNext(dsVendedor)
END

END

HReadFirst(t012_vendedor_server)
WHILE HOut() = False

HReadSeek(dsVendedor,Codigo,t012_vendedor_server.t012_vendedor,hIdentical)
IF NOT HFound(dsVendedor) THEN
HDelete(t012_vendedor_server)
END

HReadNext(t012_vendedor_server)
END

HClose(dsVendedor)
FBusca_Config_Vendedor_DBF() // Revisa Configurações dos Vendedores.

// Integração de Clientes do Local (Omega) para Servidor OmegaPed.
dsClientes is Data Source
IF HDBOpen(dsClientes,"FoxClie",gsDirClientes) THEN

// wIndex is string = Replace(gsDirVendedor ,"DBF","CDX") // Abre o Indice do Arquivo
HDBIndex(dsClientes, "CLIENTES.CDX", "codigo")

HDeleteAll(t003_clientes_server)
nWCont is int
nWReg is int = dsClientes.RecNum()

HReset(dsClientes)
HReadFirst(dsClientes)

WHILE HOut(dsClientes) = False

nWCont++

STC_Status.Caption = "Lendo Clientes "+NoSpace(nWCont)+" De "+NoSpace(nWReg)

IF dsClientes.Vendedor<>"" THEN

HReadSeek(t003_clientes_server,t003_chave,dsClientes.chave,hIdentical)
bWFound = HFound(t003_clientes_server)

t003_clientes_server.t003_nome = dsClientes.Nome
t003_clientes_server.t003_fantasia = dsClientes.Fantasia
t003_clientes_server.t003_endereco = dsClientes.Endereco
t003_clientes_server.t003_numero = dsClientes.Numero
t003_clientes_server.t003_compl = dsClientes.Compl
t003_clientes_server.t003_shopping = dsClientes.shopping
t003_clientes_server.t003_bairro = dsClientes.Bairro
t003_clientes_server.t003_cidade = dsClientes.Cidade
t003_clientes_server.t003_cep = dsClientes.Cep
t003_clientes_server.t003_estado = dsClientes.Estado
t003_clientes_server.t003_contato = dsClientes.Contato
t003_clientes_server.t003_cnpj = dsClientes.Cnpj
t003_clientes_server.t003_inscricao = dsClientes.Inscricao
t003_clientes_server.t003_cpf = dsClientes.Cic
t003_clientes_server.t003_telefone = dsClientes.Telefone
t003_clientes_server.t003_email = dsClientes.Email
t003_clientes_server.t003_site = dsClientes.HomePage
t003_clientes_server.t003_vendedor = dsClientes.Vendedor
t003_clientes_server.t003_tab_preco = dsClientes.Tab_preco
t003_clientes_server.t003_listapreco = dsClientes.ListaPreco
t003_clientes_server.t003_rede = dsClientes.CodRede
t003_clientes_server.t003_nome_rede = dsClientes.Rede
t003_clientes_server.t003_data_inclusao = dsClientes.Incluido
t003_clientes_server.t003_hora_inclusao = dsClientes.Hora_Inc
t003_clientes_server.t003_data_alteracao= dsClientes.Atualizado
t003_clientes_server.t003_hora_alteracao= dsClientes.Hora_atu

IF bWFound THEN
HSave(t003_clientes_server)
ELSE
t003_clientes_server.t003_codigo = dsClientes.Codigo
t003_clientes_server.t003_chave = dsClientes.Chave
HAdd(t003_clientes_server)
END

END
HReadNext(dsClientes)
END
END
HClose(dsClientes)

HCloseConnection(MyConnection_server_OmegaPed)

ELSE
Info("Não Foi Possível Abrir Banco Server (OmegaPed)")
END
ELSE
Info("Não Localizado Conexão com Internet, Não será possível Sincronizar.")
END

STC_Status.Caption = "Concluido Integração (OmegaPed)"





//exemplo simplificado de Multilink dbf
DBF_CLIENT.CONFIGURE("VFPOLEDB.1", //provider
"C:\DBF\"); //apontar para pasta e nao para arquivo

if (DBF_CLIENT.BEGIN_CONNECT())

if (DBF_CLIENT.SQL_QUERY(@"SELECT * FROM C:\DBF\Dados\cadapl.DBF"))

string json = DBF_CLIENT.DATA

End

string update = "update ""C:\DBF\cadapl.DBF"" set APLNOME = 'NOME MODIFICADO MULTILINK' where APLPRO = '000006'"

if (DBF_CLIENT.SQL_EXEC(update))

// ok

else

Info(DBF_CLIENT.MSG)

End

else

Info(DBF_CLIENT.MSG)

End

DBF_CLIENT.END_CONNECT()



RESUMO
=======

DBF_Client.Configure

DBF_Client.Begin_Connect

DBF_Client.Sql_Query

DBF_Client.Data

DBF_Client.Sql_Exec

DBF_Client.MSG

DBF_Client.End_Connect


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modifié, 25 octobre 2022 - 18:08
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 26 octobre 2022 - 22:40
PROCEDURE multilnk()


//exemplo simplificado de Multilink dbf
DBF_CLIENT.CONFIGURE("VFPOLEDB.1", "C:\DBF\Dados\"); //apontar para pasta e nao para arquivo

IF (DBF_CLIENT.BEGIN_CONNECT())

IF (DBF_CLIENT.SQL_QUERY("SELECT * FROM C:\DBF\Dados\cadapl.DBF"))

valor is JSON = DBF_CLIENT.DATA

END

Update is string = "update ""C:\DBF\cadapl.DBF"" set APLNOME = 'NOME MODIFICADO MULTILINK' where APLPRO = '000006'"

IF (DBF_CLIENT.SQL_EXEC(Update))

// ok

ELSE

Info(DBF_CLIENT.MSG)

END

ELSE

Info(DBF_CLIENT.MSG)

END

DBF_CLIENT.END_CONNECT()


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 26 octobre 2022 - 23:46
Para o driver DBF precisa baixar o provider VFPOLEDB.1

O link é esse aqui:

https://www.microsoft.com/en-us/download/details.aspx…

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 15 septembre 2023 - 14:37
Para formatar um Json

sTexto is string = JSONToString(StringToJSON(TEXTO_JSON), psdFormatting)


By Saul


Ou

controle is Control
controle <- ControlCreate("htm_i9",typHTML,0,0,0,0)

sjson is string=Replace(EDT_json,CR,"")

sFuncao is string= [
const objetoJSON = [%sjson%];
const json_r = JSON.stringify(objetoJSON, null, 2);
json_r;
]

ExecuteJS(controle,sFuncao,Callback)


INTERNAL PROCEDURE Callback(bsucesso boolean, svalor string)
IF bsucesso THEN
EDT_json_final=svalor
ELSE
InfoWithTimeout(3s,"Erro na conversão")
END
ControlDelete(controle)
END ok


Nesse caso não existe necessidade de nenhum controle html

Coloca um botão e esse código e é criado em runtime

o mesmo pode ser criado em tempo de execução com o
controlcreate!!!

logo após esse geração é utilizar a função executejs que possibilita utilizar javascript dentro do windev para obter retornos

aqui utilizo muito javascript para algumas coisas que não consigo com windev

como é feita a conversão utilizando JS

e pode usar N outros recursos

By Paulo Viana

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Posté le 31 octobre 2023 - 14:53
Segue exemplo de conexão ao Oracle.

1- Aqui Abro a conexão local no webdev e busco as variáveis de endereço do servidor, usuário, senha e base de dados Oracle:

IF HOpenConnection(Bd_Eletron_CV) = True THEN
HChangeConnection("*",Bd_Eletron_CV)
HReset(T001_Acesso)
IF HReadSeek(T001_Acesso,t001_Acesso_ID,1,hIdentical) = True THEN
SERVER is string = T001_Acesso.t001_server
USER is string = T001_Acesso.t001_user
SENHA is string = T001_Acesso.t001_password
BASE is string = T001_Acesso.t001_base
ORACLE_CLIENT.CONFIGURE(SERVER,USER,SENHA)
End


2- Quando preciso fazer consulta abro a conexão, executando a query, select, insert, update ou delete, ex.:

IF ORACLE_CLIENT.BEGIN_CONNECT() = True THEN
ValorSql2 is string = "select a.tvnd_vendedor_pk,a.tvnd_nome,a.tvnd_nome_abreviado,a.tvnd_senha_consult_vendas,a.tvnd_cpf_cnpj,b.tlnk_unidade_fk_pk,b.tlnk_ativo from tvnd_vendedor a, TLNK_VENDEDOR_UNIDADE b where a.tvnd_vendedor_pk = b.tlnk_vendedor_fk_pk and b.tlnk_ativo = 'S'"

3- depois so tratar o resultado:

IF ORACLE_CLIENT.SQL_QUERY(ValorSql2) = True THEN
resultado = ORACLE_CLIENT.DATA
HDeleteAll(T048_VendedoresXFilial)
FOR i=1 TO resultado..Count
T048_VendedoresXFilial.t048_Pk_Proton = resultado[i].tvnd_vendedor_pk
T048_VendedoresXFilial.t048_nome = resultado[i].tvnd_nome
T048_VendedoresXFilial.t048_nomAbrev= resultado[i].tvnd_nome_abreviado
T048_VendedoresXFilial.t048_CpfVend = resultado[i].tvnd_cpf_cnpj
T048_VendedoresXFilial.t048_lnkFilial = resultado[i].tlnk_unidade_fk_pk
T048_VendedoresXFilial.t048_Ativo = "S"
HAdd(T048_VendedoresXFilial)
END
4- Por fim fecho a conexão:

ORACLE_CLIENT.END_CONNECT();
Membre enregistré
3 659 messages
Popularité : +175 (223 votes)
Posté le 01 février 2024 - 21:10
EXEMPLO DE CONSULTA DE UMA TABELA USANDO O DRIVER MULTILINK COM MS SQL SERVER

SERVER,USER,PWSS,BANCO is string
SERVER = "LOCALHOST"
USER = "ADRIANO"
PWSS = "123456"
BANCO = "DB_FATURA"

//ABRIR A CONEXAO
MSSQL_CLIENT.CONFIGURE(SERVER,USER,PWSS,BANCO)

//TESTAR A CONEXAO SE DEU CERTO
IF MSSQL_CLIENT.BEGIN_CONNECT() = True THEN

//CODIGO QUE DESEJA EXECUTAR
SQLCODE is string = [
SELECT * FROM TABELA
]

//EXECUCAO DO CODIGO E VERIFICANDO SE DEU CERTO
IF MSSQL_CLIENT.SQL_QUERY(SQLCODE) = True THEN

//PEGANDO O RESULTADO
RESULTADO is JSON = MSSQL_CLIENT.DATA

// USAR O DEBUG O NOME RESULTADO PARA PEGAR O PATH DOS DADOS
RESULTADO = RESULTADO.NOME //PATH DO DADO

//IGUALAR O JSON AO EDT DA TELA
EDT_RESULTADO = RESULTADO

ELSE

//MSG DE ERRO QUE VEIO DO BANCO DE DADOS
Info(MSSQL_CLIENT.MSG)

END

ELSE

//MSG DE ERRO QUE VEIO DO BANCO DE DADOS
Info(MSSQL_CLIENT.MSG)

END


QUALQUER DUVIDA ENTRE EM CONTATO PELO WHATSAPP 41 99949 1800

https://wxsolucoes.com.br

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/