×
Linguagem de Programação ADVPL
Perguntas Conexão com BD SQL
- dgs
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 13
- Obrigados Recebidos: 0
10 anos 1 semana atrás #26148
por dgs
Conexão com BD SQL foi criado por dgs
Sou do mundo .NET estou entrando no mundo ADVPL, gostaria de saber como faço a conexão com o banco SQL.
Tenho um servidor "local" eu fiz essa telinha com combox eu gostaria de carregar ele, buscando as informações
do meu banco de dados SQL que esta no meu PC.
esse é o meu código, lembrando que, só faz uma semana que eu estou mexendo com ADVPL
#include "Protheus.ch"
#include "Topconn.ch"
/*
+==========================================+
| Programa: Tela 1 |
| Autor : Douglas |
| Data : 10 de Novembro de 2014 |
+==========================================+
*/
User Function Tela1()
Local aItems:= {'Item1','Item2','Item3'}
Local vItems := {}
local _cTexto_1 := ""
local _cTexto_2 := ""
Local oDlg, oButton, oRadio, nRadio:=1
Local aOptions:= {'escolha1','escolha2'}
// var BD
Local cAlias := GetNextAlias() //Obtendo o próximo Alias Disponivel
Local cQuery := ""
Local nTcLink := AdvConnection() //Salvando a Conexão de Entrada
Local nTcLinkOdbc := TcLink("MSSQL/P11BRA","127.0.0.1",1433)
//
DEFINE MSDIALOG oDlg TITLE "DGS NO ADVPL" FROM 200,100 TO 600,600 PIXEL
//
Texto
// TFont
oTFont := TFont():New('Courier new',,20,.T.)
Name := oTFont:Name
nWidth := oTFont:nWidth
nHeigh := oTFont:nHeight
Bold := oTFont:Bold
Italic := oTFont:Italic
Underline := oTFont:Underline
//TSay (Label)
oTSay := TSay():New( 01, 01,{||'Data Inicial:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,80,35,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Data Final:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,70,65,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Vendedor:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,60,95,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Cliente:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,55,135,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Produto:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,55,180,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Sintetico/Analitico:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,115,220,.F.,.T.,.F.,.F.,.F.,.F. )
//
Tex Box
@ 15,120 GET oMens VAR _cTexto_1 MEMO SIZE 50,10 OF oDlg PIXEL
@ 30,120 GET oMens VAR _cTexto_2 MEMO SIZE 50,10 OF oDlg PIXEL
//
Combox
// Usando New cCombo1
cCombo1:= aItems[1]
oCombo1 := TComboBox():New(45,120,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
cCombo2:= aItems[1]
oCombo1 := TComboBox():New(65,120,{|u|if(PCount()>0,cCombo2:=u,cCombo2)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo2')
cCombo3:= aItems[1]
oCombo3 := TComboBox():New(85,120,{|u|if(PCount()>0,cCombo3:=u,cCombo3)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
cCombo4:= aItems[1]
oCombo4 := TComboBox():New(105,120,{|u|if(PCount()>0,cCombo4:=u,cCombo4)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
//
CheckBox
oRadio:= tRadMenu():New(130,110,aOptions,;
{|u|if(PCount()>0,nRadio:=u,nRadio)},;
oDlg,,,,,,,,50,20,,,,.T.)
//oRadio:= tRadMenu():New(130,50,aOptions,;
//{|u|if(PCount()>0,nRadio:=u,nRadio)},;
//oDlg,,,,,,,,50,20,,,,.T.)
//
Botão
oButton := SButton():New( 160,90,1,,oDlg,,,)
ACTIVATE MSDIALOG oDlg
//Return
Tenho um servidor "local" eu fiz essa telinha com combox eu gostaria de carregar ele, buscando as informações
do meu banco de dados SQL que esta no meu PC.
esse é o meu código, lembrando que, só faz uma semana que eu estou mexendo com ADVPL
#include "Protheus.ch"
#include "Topconn.ch"
/*
+==========================================+
| Programa: Tela 1 |
| Autor : Douglas |
| Data : 10 de Novembro de 2014 |
+==========================================+
*/
User Function Tela1()
Local aItems:= {'Item1','Item2','Item3'}
Local vItems := {}
local _cTexto_1 := ""
local _cTexto_2 := ""
Local oDlg, oButton, oRadio, nRadio:=1
Local aOptions:= {'escolha1','escolha2'}
// var BD
Local cAlias := GetNextAlias() //Obtendo o próximo Alias Disponivel
Local cQuery := ""
Local nTcLink := AdvConnection() //Salvando a Conexão de Entrada
Local nTcLinkOdbc := TcLink("MSSQL/P11BRA","127.0.0.1",1433)
//
DEFINE MSDIALOG oDlg TITLE "DGS NO ADVPL" FROM 200,100 TO 600,600 PIXEL
//
Texto
// TFont
oTFont := TFont():New('Courier new',,20,.T.)
Name := oTFont:Name
nWidth := oTFont:nWidth
nHeigh := oTFont:nHeight
Bold := oTFont:Bold
Italic := oTFont:Italic
Underline := oTFont:Underline
//TSay (Label)
oTSay := TSay():New( 01, 01,{||'Data Inicial:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,80,35,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Data Final:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,70,65,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Vendedor:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,60,95,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Cliente:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,55,135,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Produto:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,55,180,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Sintetico/Analitico:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,115,220,.F.,.T.,.F.,.F.,.F.,.F. )
//
Tex Box
@ 15,120 GET oMens VAR _cTexto_1 MEMO SIZE 50,10 OF oDlg PIXEL
@ 30,120 GET oMens VAR _cTexto_2 MEMO SIZE 50,10 OF oDlg PIXEL
//
Combox
// Usando New cCombo1
cCombo1:= aItems[1]
oCombo1 := TComboBox():New(45,120,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
cCombo2:= aItems[1]
oCombo1 := TComboBox():New(65,120,{|u|if(PCount()>0,cCombo2:=u,cCombo2)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo2')
cCombo3:= aItems[1]
oCombo3 := TComboBox():New(85,120,{|u|if(PCount()>0,cCombo3:=u,cCombo3)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
cCombo4:= aItems[1]
oCombo4 := TComboBox():New(105,120,{|u|if(PCount()>0,cCombo4:=u,cCombo4)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
//
CheckBox
oRadio:= tRadMenu():New(130,110,aOptions,;
{|u|if(PCount()>0,nRadio:=u,nRadio)},;
oDlg,,,,,,,,50,20,,,,.T.)
//oRadio:= tRadMenu():New(130,50,aOptions,;
//{|u|if(PCount()>0,nRadio:=u,nRadio)},;
//oDlg,,,,,,,,50,20,,,,.T.)
//
Botão
oButton := SButton():New( 160,90,1,,oDlg,,,)
ACTIVATE MSDIALOG oDlg
//Return
Por favor Acessar ou Registrar para participar da conversa.
- asf.Roberto
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 56
- Obrigados Recebidos: 0
10 anos 1 semana atrás #26151
por asf.Roberto
Respondido por asf.Roberto no tópico Conexão com BD SQL
Douglas
Dependendo do caso nao precisa usar query pode usar um dbselectarea() e um dbseek(), lembrando que nestes casos use a função getArea() e restArea() para voltar os arquivos nas "posições" que estavam.
Mas vamos lá eu uso assim não sei se é a melhor forma mas, se nao for peço que outros me expliquem a melhor.
Local cAlias := GetNextAlias()
Local cQuery := ""
cQuery = "SELECT BLA BLA BLA BLA"
cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAlias)
DbSelectArea(cAlias)
No seu combobox tem a variavel cCombo1 para definir o valor dela use:
cCombo1 := (cAlias)->NOME_CAMPO
de acordo com o valor desta variavel ele seta o combobox.
Espero ter ajudado.
Obrigado
Dependendo do caso nao precisa usar query pode usar um dbselectarea() e um dbseek(), lembrando que nestes casos use a função getArea() e restArea() para voltar os arquivos nas "posições" que estavam.
Mas vamos lá eu uso assim não sei se é a melhor forma mas, se nao for peço que outros me expliquem a melhor.
Local cAlias := GetNextAlias()
Local cQuery := ""
cQuery = "SELECT BLA BLA BLA BLA"
cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAlias)
DbSelectArea(cAlias)
No seu combobox tem a variavel cCombo1 para definir o valor dela use:
cCombo1 := (cAlias)->NOME_CAMPO
de acordo com o valor desta variavel ele seta o combobox.
Espero ter ajudado.
Obrigado
Por favor Acessar ou Registrar para participar da conversa.
- asf.Roberto
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 56
- Obrigados Recebidos: 0
10 anos 1 semana atrás #26152
por asf.Roberto
Respondido por asf.Roberto no tópico Conexão com BD SQL
Mais uma coisa,
Não efetua operações de update,delete,insert diretamente no banco,
Isso pode te dar grandes problemas.
Obrigado
Não efetua operações de update,delete,insert diretamente no banco,
Isso pode te dar grandes problemas.
Obrigado
Por favor Acessar ou Registrar para participar da conversa.
- dgs
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 13
- Obrigados Recebidos: 0
- asf.Roberto
- Desconectado
- Membro Sénior
Menos
Mais
- Postagens: 56
- Obrigados Recebidos: 0
10 anos 6 dias atrás - 10 anos 6 dias atrás #26157
por asf.Roberto
Respondido por asf.Roberto no tópico Conexão com BD SQL
Douglas,
Colocou os includes no inicio do programa?
#include "rwmake.ch"
#include "protheus.ch"
#include 'topconn.ch'
Tem um erro na linha 38 você colocou "cQuery =" deve ser "cQuery :=".
Como esta configurado seu ambiente é com topconnect e dbacess?
Quanto aos insert,update se forem tabelas nao controladas pelo sistema (que nao foram criadas pelo configurador SX2)
não há problema, se forem o problema acontece com o sincronismo do top com o banco.
Nestes casos tenta optar sempre por usar a função MsExecAuto() quando houver está função faz todas as validações como se estivesse digitando na tela os dados:
tdn.totvs.com/pages/releaseview.action?pageId=36309383
Caso nao tenha a MsExecAuto para a rotina que queres acessar pode usar o RecLock():
tdn.totvs.com/pages/viewpage.action?pageId=24347041
E em ultimo/extremo caso insert,update direto (nunca fiz )
Espero ter sido claro qualquer duvido posta ai de novo.
Obrigado
Colocou os includes no inicio do programa?
#include "rwmake.ch"
#include "protheus.ch"
#include 'topconn.ch'
Tem um erro na linha 38 você colocou "cQuery =" deve ser "cQuery :=".
Como esta configurado seu ambiente é com topconnect e dbacess?
Quanto aos insert,update se forem tabelas nao controladas pelo sistema (que nao foram criadas pelo configurador SX2)
não há problema, se forem o problema acontece com o sincronismo do top com o banco.
Nestes casos tenta optar sempre por usar a função MsExecAuto() quando houver está função faz todas as validações como se estivesse digitando na tela os dados:
tdn.totvs.com/pages/releaseview.action?pageId=36309383
Caso nao tenha a MsExecAuto para a rotina que queres acessar pode usar o RecLock():
tdn.totvs.com/pages/viewpage.action?pageId=24347041
E em ultimo/extremo caso insert,update direto (nunca fiz )
Espero ter sido claro qualquer duvido posta ai de novo.
Obrigado
Ultima edição: 10 anos 6 dias atrás por asf.Roberto. Razão: Complemento
Por favor Acessar ou Registrar para participar da conversa.
- dgs
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 13
- Obrigados Recebidos: 0
10 anos 6 dias atrás #26161
por dgs
Respondido por dgs no tópico Conexão com BD SQL
Boa explicação na questão do update,insert, etc... direto no BD.
Mas acho que vai longe esse meu primeiro programa em ADVPL subirrrrr kksss
Cara agradeço pela atenção, vamos lá, fiz como você me explicou, e esta dando o mesmo erro.
Eu estou usando "dbacess", fiz toda configuração no "DBacess Monitor" com SQL, ja criei um Base de Dados
no SQL e também uma tabela com valores em "string".
estou com duvida como carregar o combox "cCombo1", veja o meu código fonte completo,
ta meio estranho mas é o primeiro de muitos kksss
#include "Protheus.ch"
#include "Topconn.ch"
#include "rwmake.ch"
/*
+==========================================+
| Programa: Tela 1 |
| Autor : Douglas da Silva |
| Data : 10 de Novembro de 2014 |
+==========================================+
*/
User Function Tela1()
Local aItems:= {}
Local vItems := {"1- teste"}
local _cTexto_1 := ""
local _cTexto_2 := ""
Local oDlg, oButton, oRadio, nRadio:=1
Local aOptions:= {'escolha1','escolha2'}
// var BD
//Local cAlias := GetNextAlias() //Obtendo o próximo Alias Disponivel
//Local cQuery := ""
//Local nTcLink := AdvConnection() //Salvando a Conexão de Entrada
//Local nTcLinkOdbc := TcLink("MSSQL/P11BRA","127.0.0.1",1433)
//////////////////////////////// net exemplo
Local cAlias := GetNextAlias()
Local cQuery := ""
cQuery := "SELECT DGS FROM tabela"
cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAlias)
DbSelectArea(cAlias)
//No seu combobox tem a variavel cCombo1 para definir o valor dela use:
//cCombo1 := (cAlias)->NOME_CAMPO
//de acordo com o valor desta variavel ele seta o combobox.
////////////////////////////////////////////
//
DEFINE MSDIALOG oDlg TITLE "DGS NO ADVPL" FROM 200,100 TO 600,600 PIXEL
//
Texto
// TFont
oTFont := TFont():New('Courier new',,20,.T.)
Name := oTFont:Name
nWidth := oTFont:nWidth
nHeigh := oTFont:nHeight
Bold := oTFont:Bold
Italic := oTFont:Italic
Underline := oTFont:Underline
//TSay (Label)
oTSay := TSay():New( 01, 01,{||'Data Inicial:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,80,35,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Data Final:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,70,65,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Vendedor:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,60,95,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Cliente:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,55,135,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Produto:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,55,180,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Sintetico/Analitico:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,115,220,.F.,.T.,.F.,.F.,.F.,.F. )
//
Tex Box
@ 15,120 GET oMens VAR _cTexto_1 MEMO SIZE 50,10 OF oDlg PIXEL
@ 30,120 GET oMens VAR _cTexto_2 MEMO SIZE 50,10 OF oDlg PIXEL
//
Combox
// Usando New cCombo1
//cCombo1:= aItems[]
cCombo1 := (cAlias)->DGS
oCombo1 := TComboBox():New(45,120,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
/////////////////////////////////////////////////////////////////////////////
cCombo2:= vItems[1]
oCombo2 := TComboBox():New(65,120,{|u|if(PCount()>0,cCombo2:=u,cCombo2)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo2')
cCombo3:= vItems[1]
oCombo3 := TComboBox():New(85,120,{|u|if(PCount()>0,cCombo3:=u,cCombo3)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
cCombo4:= vItems[1]
oCombo4 := TComboBox():New(105,120,{|u|if(PCount()>0,cCombo4:=u,cCombo4)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
//
CheckBox
oRadio:= tRadMenu():New(130,110,aOptions,;
{|u|if(PCount()>0,nRadio:=u,nRadio)},;
oDlg,,,,,,,,50,20,,,,.T.)
//oRadio:= tRadMenu():New(130,50,aOptions,;
//{|u|if(PCount()>0,nRadio:=u,nRadio)},;
//oDlg,,,,,,,,50,20,,,,.T.)
//
Botão
oButton := SButton():New( 160,90,1,,oDlg,,,)
ACTIVATE MSDIALOG oDlg
//Return
Mas acho que vai longe esse meu primeiro programa em ADVPL subirrrrr kksss
Cara agradeço pela atenção, vamos lá, fiz como você me explicou, e esta dando o mesmo erro.
Eu estou usando "dbacess", fiz toda configuração no "DBacess Monitor" com SQL, ja criei um Base de Dados
no SQL e também uma tabela com valores em "string".
estou com duvida como carregar o combox "cCombo1", veja o meu código fonte completo,
ta meio estranho mas é o primeiro de muitos kksss
#include "Protheus.ch"
#include "Topconn.ch"
#include "rwmake.ch"
/*
+==========================================+
| Programa: Tela 1 |
| Autor : Douglas da Silva |
| Data : 10 de Novembro de 2014 |
+==========================================+
*/
User Function Tela1()
Local aItems:= {}
Local vItems := {"1- teste"}
local _cTexto_1 := ""
local _cTexto_2 := ""
Local oDlg, oButton, oRadio, nRadio:=1
Local aOptions:= {'escolha1','escolha2'}
// var BD
//Local cAlias := GetNextAlias() //Obtendo o próximo Alias Disponivel
//Local cQuery := ""
//Local nTcLink := AdvConnection() //Salvando a Conexão de Entrada
//Local nTcLinkOdbc := TcLink("MSSQL/P11BRA","127.0.0.1",1433)
//////////////////////////////// net exemplo
Local cAlias := GetNextAlias()
Local cQuery := ""
cQuery := "SELECT DGS FROM tabela"
cQuery := ChangeQuery(cQuery)
dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAlias)
DbSelectArea(cAlias)
//No seu combobox tem a variavel cCombo1 para definir o valor dela use:
//cCombo1 := (cAlias)->NOME_CAMPO
//de acordo com o valor desta variavel ele seta o combobox.
////////////////////////////////////////////
//
DEFINE MSDIALOG oDlg TITLE "DGS NO ADVPL" FROM 200,100 TO 600,600 PIXEL
//
Texto
// TFont
oTFont := TFont():New('Courier new',,20,.T.)
Name := oTFont:Name
nWidth := oTFont:nWidth
nHeigh := oTFont:nHeight
Bold := oTFont:Bold
Italic := oTFont:Italic
Underline := oTFont:Underline
//TSay (Label)
oTSay := TSay():New( 01, 01,{||'Data Inicial:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,80,35,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Data Final:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,70,65,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Vendedor:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,60,95,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Cliente:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,55,135,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Produto:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,55,180,.F.,.T.,.F.,.F.,.F.,.F. )
oTSay := TSay():New( 01, 01,{||'Sintetico/Analitico:'},oDlg;
,,oTFont,.T.,.F.,.F.,.T.,0,,115,220,.F.,.T.,.F.,.F.,.F.,.F. )
//
Tex Box
@ 15,120 GET oMens VAR _cTexto_1 MEMO SIZE 50,10 OF oDlg PIXEL
@ 30,120 GET oMens VAR _cTexto_2 MEMO SIZE 50,10 OF oDlg PIXEL
//
Combox
// Usando New cCombo1
//cCombo1:= aItems[]
cCombo1 := (cAlias)->DGS
oCombo1 := TComboBox():New(45,120,{|u|if(PCount()>0,cCombo1:=u,cCombo1)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
/////////////////////////////////////////////////////////////////////////////
cCombo2:= vItems[1]
oCombo2 := TComboBox():New(65,120,{|u|if(PCount()>0,cCombo2:=u,cCombo2)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo2')
cCombo3:= vItems[1]
oCombo3 := TComboBox():New(85,120,{|u|if(PCount()>0,cCombo3:=u,cCombo3)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
cCombo4:= vItems[1]
oCombo4 := TComboBox():New(105,120,{|u|if(PCount()>0,cCombo4:=u,cCombo4)},;
aItems,50,20,oDlg,,;
,,,,.T.,,,,,,,,,'cCombo1')
//
CheckBox
oRadio:= tRadMenu():New(130,110,aOptions,;
{|u|if(PCount()>0,nRadio:=u,nRadio)},;
oDlg,,,,,,,,50,20,,,,.T.)
//oRadio:= tRadMenu():New(130,50,aOptions,;
//{|u|if(PCount()>0,nRadio:=u,nRadio)},;
//oDlg,,,,,,,,50,20,,,,.T.)
//
Botão
oButton := SButton():New( 160,90,1,,oDlg,,,)
ACTIVATE MSDIALOG oDlg
//Return
Por favor Acessar ou Registrar para participar da conversa.
Tempo para a criação da página:0.162 segundos