Página 2 de 2

Facilitar criação de tabela no fonte

Enviado: 07 Out 2016 16:04
por JoséQuintas
Tava pensando em algo menos radical, tipo isto:

Código: Selecionar todos

cString := "CREATE TABLE CLIENTES ( " + ;
   CampoMySql( "CODIGO", "I" , 11, 0, .F., "AUTO_INCREMENT" ) + ;
   CampoMySql( "NOME", "V", 100, 0, .T., "DEFAULT ''" ) + ")"

FUNCTION CampoMySql( cName, cType, nLen, nDec, lNull, cCompl )

   LOCAL cText := ""

   cText += cName 
   DO CASE
   CASE cType == "C"; cText += "CHAR"
   CASE cType == "D"; cText += "DECIMAL"
   CASE cType == "I" ; cText += "INT"
   CASE cType == "V", cText += "VARCHAR"
   ENDCASE
   cText += " (" + Ltrim(Str(nLen)) + iif( nDecimal == 0, "", ", " + Ltrim( Str(nDecimal) ) ) + ") "
   cText += " " + iif( lNull, "NULL", "NOT NULL" )
   IF ! Empty( cCompl )
      cText += cCompl
   ENDIF
   RETURN cText
Só pra deixar as partes alinhadas, sem encher de string no EXE.
Mesmo assim, parece que não compensa.

Facilitar criação de tabela no fonte

Enviado: 07 Out 2016 21:25
por wmanesco
Tem opção de trabalhar com array, já vi uma vez mas não lembro certinho a estrutura mas a idéia é a seguinte:

Código: Selecionar todos

FUNCTION CriaTbelas()

   LOCAL aTabela

   FOR EACH aTabela IN EstruturaTabelasSistema()
      //Aqui seria desenvolvido o código montando a string.
   NEXT 

RETURN 

/****************************************************/
FUNCTION EstruturaTabelasSistema()

   LOCAL aTabelas := {}, aTabela

   //ESTRUTURA
   //NOME, TIPO, TAMANHO, DECIMAL, AUTO INCREMENT (pode ser adicionado mais campos tipo um campo para dizer se é primary key)

   aTabela := {"CLIENTES", {"ID"      , "N", 10, 0, .T. },;
                                       {"NOME", "C", 50, 0, .F. };
                   }

   AAdd(aTabelas, aTabela)

RETURN aTabelas

Algo neste sentido acho que fica bom também sem ser tão radical

Facilitar criação de tabela no fonte

Enviado: 07 Dez 2016 15:39
por JoséQuintas
Como eu já comentei uma vez:

A parte mais crítica, aonde temos mais pressa, é pra resolver bugs.
Então o fonte tem que estar direcionado a ver rápido do que se trata.
Na dúvida sobre qual fica melhor, melhor deixar o que permite resolver bugs rapidamente.
Ao não perder tempo com bugs, sobra mais tempo pra criação/melhoria.

Também é interessante já criar estrutura e índices de uma vez, assim qualquer coisa errada já aparece o alerta.

Por enquanto ainda vou mantendo o original do início do post.