Facilitar criação de tabela no fonte

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Facilitar criação de tabela no fonte

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
wmanesco
Usuário Nível 3
Usuário Nível 3
Mensagens: 116
Registrado em: 09 Set 2016 13:18
Localização: ITAJAI - SC

Facilitar criação de tabela no fonte

Mensagem 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
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Facilitar criação de tabela no fonte

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder