Jump to content
Fivewin Brasil

ORM e CRUD View


MatheusFarias

Recommended Posts

Pessoa estou desenvolvendo umas classes para agilizar alguns novos projetos e durante o meu processo da graduação vi que alguns Frameworks agilizam bastante certas rotinas do sistema, como procurei algo semelhante no fivewin e não tive muito sucesso, decidi desenvolver por conta própria baseado no funcionamento que já tive dos projetos da faculdade e feitos em outras linguagens.

Inicialmente desenvolvi para o conceito de ORM ( ORM (Object Relational Mapper) é uma técnica de mapeamento objeto relacional que permite fazer uma relação dos objetos com os dados que os mesmos representam. http://www.devmedia.com.br/orm-object-relational-mapper/19056)
Para quem não conhece algo do tipo resumidamente é você cria a classe e instancia ela em um controller ( outra classe responsável por fazer acesso ao BD, criar tabelas e índices, alem de inserir, altera, excluir, e pesquisar ) 

Essa classe hoje está compatível com a SQLRDD e os BD que ela é compatível. Infelizmente alguns conceitos do ORM não permitem que seja usado com DBF. 

e sobre a parte de CRUD View ( CRUD (acrónimo de Create, Read, Update e Delete na língua Inglesa) para as quatro operações básicas utilizadas em bases de dados relacionais (RDBMS) ou em interface para utilizadores para criação, consulta, atualização e destruição de dados. )
É que pretendo desenvolver outra classe para criação de janelas padronizadas, nos novos projetos sempre encontro uma demanda maior no desenvolvimento dos cadastros básicos e de nível médio do programa pois sei que poderia ser padronizado. 

 

Hoje para uso proprio estou investindo algum tempo nesses sub-projetos que hoje ja me trazem um bom retorno no tempo de desenvolvimento. 

Gostaria de saber dos colegas o nível de interesse que tem sobre esse tipo de experiencia de programação. E se tinham interesse em conhecer essas metodologias no fivewin. 

 Alguns desses projetos podem ser usados separadamente. 

A imagem em anexo é de uma adaptação a classe datarow para criar dialogs sem @ say e redefine 

 

   lSave := EDITVARS vcodise2,vnomese2,;
    vcodigru,vnomegru,;
    vcodisec,vnomesec,;
    vcodiloc,vnomeloc,;
    vcodifor,vnomefor,;
    talfa,trefe,tzera,tinsc,tocio;
    PROMPTS "Sub-Seção","say:"+cbitmaps+"lupa2.bmp" ,;
    "Sub-Grupo","say:"+cbitmaps+"lupa2.bmp" ,;
    "Seção","say:"+cbitmaps+"lupa2.bmp" ,;
    "Grupo","say:"+cbitmaps+"lupa2.bmp" ,;
    "Fornecedor","say:"+cbitmaps+"lupa2.bmp" ,;
    "Imprimir em ordem alfabética",;
    "Imprimir somente com referência",;
    "Imprimir sem estoque gerencial",;
    "Imprimir somente inconsistências",;
    "Imprimir somente desativados";
    PICTURES "@R 999999",nil,"@R 999999",nil,"@R 999999",nil,"@R 999999",nil,"@R 999999",nil ;
    VALIDS {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodise2,@onomese2) .and. iif(!empty(vcodise2),checkse2(),.t.) },;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodise2,@onomese2) .and. Pesqse2(.t.) } ,;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodigru,@onomegru) .and. iif(!empty(vcodigru),checkgru(),.t.) },;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodigru,@onomegru) .and. Pesqgru(.t.) } ,;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodisec,@onomesec) .and. iif(!empty(vcodisec),checksec(),.t.) },;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodisec,@onomesec) .and. Pesqsec(.t.) } ,;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodiloc,@onomeloc) .and. iif(!empty(vcodiloc),checkloc(),.t.) },;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodiloc,@onomeloc) .and. Pesqloc(.t.) } ,;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodifor,@onomefor) .and. iif(!empty(vcodifor),checkfor(),.t.) },;
    {|oGetBlock| EditVarsGetValid(oGetBlock,@ocodifor,@onomefor) .and. Pesqfor(.t.) } ;
    TITLE "Digite os Codigos ou Deixe em Branco Para Selecionar Todos"
   *

capturar1.jpg

 

Link to comment
Share on other sites

 

Amiguinhos,

Matheus Farias,

O CRUD é baseado em PHP, C#, ...?

Interessante ver a sintaxe xBase, pois facilitaria muito a programação para os conhecedores.

Não consegui ver a imagem.

 

Exemplo ORM
 

CLASS Usuario FROM Entidade

   DATA cNome AS CHARACTER INIT SPACE(50)
   DATA cSenha AS CHARACTER INIT SPACE(50)
   DATA lAdministrador AS LOGICAL INIT .F.
   DATA cOBS AS CHARACTER INIT Memo()
   
	METHOD New() CONSTRUCTOR

ENDCLASS

METHOD New() CLASS Usuario
		 ::Super():New()
return Self

Exemplo da Instancia 
 

Function ManterTabela()

			MsgMeter( { | oMeter, oText, oDlg, lEnd | ;
             ManterTabela_Meter( oMeter, oText, oDlg, @lEnd ) },;
             "Manutenção de Tabelas", "Aguarde um momento..." )


Function ManterTabela_Meter(oMeter, oText, oDlg, lEnd)
			Local aTabelas:={},oTabela:=NIL,nTabela:=1
			*
			oUsuario := Usuario():New()
			oControleUsuario:= Tabela():New(oUsuario)
			oControleUsuario:AdicionarIndice("cNome","NOME")
			aadd(aTabelas,oControleUsuario)
			*
			oMeter:SetTotal(len(aTabelas))
			*
			For each oTabela in aTabelas
				oTabela:ManterTabela()
		      oTabela:ManterIndice()
				oMeter:Set(nTabela++)
			Next
			

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...