Comando SQL x XBASE

Forum sobre SQL.

Moderador: Moderadores

Avatar do usuário
Karine Lima Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 27 Set 2013 10:38
Localização: Limeira-SP

Comando SQL x XBASE

Mensagem por Karine Lima Almeida »

Sim, resolvi
eu ia postar ontem mas estava com problema aqui no forum,

Era permissão no mysql do servidor ubunto, resolvido com:

GRANT ALL ON *.* TO ‘nome_user’@'%’ IDENTIFIED BY ‘senha‘;

Para o banco de dados mysql poder ser acessado pela rede, é necessario fazer

uma alteração nos parametros de configuraçao em / etc / mysql / my.cnf (sem os espaços entre as /)

onde esta bind-address = 127.0.0.1 tem que alterar para bind-address =

0.0.0.0

reiniciei o mysql e deu certo.

Pessoal, eu gostaria de saber se do xbase para o SQLMIX, eu terei que mudar

muito meu codigo pra fazer as consultas nas tabelas?
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Comando SQL x XBASE

Mensagem por Itamar M. Lins Jr. »

Ola!
Consultas ? Neste caso vai precisar mudar pouco.

Código: Selecionar todos

dbUseArea( .T., , "SELECT * FROM country", "country" )
Já vem tudo mastigadinho ai em DBF...

Agora o TAL CRUD, Create, Replace, Update, Delete. Tudo em SQL, a mesma coisa que fazemos em PHP/C#... todas as outras ferramentas(linguagens).

Entenda que o SQLMIX não simula DBF, igual ao MEDIATOR/SQLRDD. Ele traz o resultado em DBF via comandos SQL, mas para as outras coisas é preciso usar SQL.
Dai algumas pessoas usam Stored Procedures, para poupar esses códigos no sistema, deixando apenas códigos xBase nos programas e os códigos em SQL no servidor.
Técnica usada em outras linguagens...
Por isso o SQLMIX não tem as limitações destas ferramentas(Mediator/SqlRdd).

Segue explicação de como foi concebido o SQLMIX.

Código: Selecionar todos

                    Simple SQL Interface for Harbour



1. Introduction

   Simple SQL interface implements accessing SQL query result via RDD
interface. It is not intended to be replacement for "transparent" move of
DBFCDX application to SQL world.

   I want to discuss this in more detail. Many current RDDs for SQL servers
(ex. SQLRDD from xHarbour.com) tries to make a feeling you are working with
DBF file, but not with SQL database. SQL server does not support many
features, ex. RecNo(), deleted flag, file locks, record locks. These RDDs
are emulating these features to make feeling of DBF. Deleted() function is
emulated by creating additional table columns to store delete flag. Some
"hidden system" tables are used to register locking operations and emulate
record and file locks in DBF style. The idea of SQL query is also lost. If
you do a simple loop

 dbUseArea( , "select * from my_table" )
 DO WHILE ! Eof()
    somefunc( FIELD->some_sql_field )
    dbSkip()
 ENDDO

RDD usualy will read SQL rows in portions, let's say 100 records per query.
So, hidden queries are generated. If you are using indexes these queries
are really complicated. Let's have index on FIELD1 + Str( FIELD2 ). A seek
to value cValue1 + Str( nValue2 ) will generate a query like:

 SELECT * FROM my_table
     WHERE (FIELD1 == cValue1 and FIELD2 >= nValue2) or FIELD1 > cValue1
     ORDER BY FIELD1, FIELD2, _RECNO
     LIMIT 100

After evaluation of first 100 cached records, next query will be generated:

 SELECT * FROM my_table
     WHERE (FIELD1 == cLastField1 and FIELD2 == nLastValue2 and _RECNO > nLastRecno) or
           (FIELD1 == cLastField1 and FIELD2 > nLastValue2) or
           FIELD1 > cLastValue1
     ORDER BY FIELD1, FIELD2, _RECNO
     LIMIT 100

To optimize these queries the SQL index expresion should be
"FIELD1,FIELD2,_RECNO", but not "FIELD1,FIELD2" as written in INDEX ON
command.

   "Simple SQL interface" is too long to repeat every time I want to
address this library. I'll also use acronym "SSI" to address it.

   The idea of SSI is different. It does not make hidden queries. All
queries should be made explicitly by programmer. SSI gives access to query
result via RDD interface, it does not tries to emulate DBF and be
"plug-and-play" solution for DBF to SQL migration. If you do

 dbUseArea( , "select * from my_table")

all query (it could contain millions of records!) will be cached.

   The features of SSI approach are:

- It's possible to access SQL database of other applications. Other
 applications usualy does not follow agreement of "plug-and-play" SQL drivers
 about additional DELETED column, _RECNO in the end of index expression, etc.
 Access of SQL database of other applications is sometimes not possible.

- It's query oriented. That means a simple DO WHILE ! Eof() loop will iterate
 each records once and only once. This is not true for "plug-and-play" SQL
 drivers, if indexing is used. Just like in the case of loop over DBF file.
 It is not guaranteed that all records are included! Yes! If key value of the
 first record in index is changed to be the last record in index during the
 phase of record processing, DO WHILE ! Eof() loop will iterate only this
 single records even if the database contains millions of records. Your sould
 do FLock() on DBF to guarantee the records are not changed. Do you use FLock()
 before readonly DO WHILE ! Eof() loops? :)



2. Architecture


             +-------------+
             |             |
             | SQLMIX RDD  |
             |             |
             +-------------+
                  |  ^
                  V  |
             +-------------+    +---------+
             |             |--->|         |
             | SQLBASE RDD |    |   SDD   |
             |             |<---|         |
             +-------------+    +---------+


   SQLBASE RDD implements basic functionality for accessing SQL query result
via RDD interface. This RDD could be used, if indexing of query result is not
necessary or all indexing is done by SQL server (by using ORDER BY clause).

   SQLMIX RDD implements indexing of query result. This indexing is not
related to SQL server ORDER BY clause. SQLMIX do indexing of the query on the
client side.

   SDD is acronym for Sql Database Driver. RDD is used to implement access
of different database formats like DBF, SDF, etc. SDD is used to implement
access of different SQL databases. Every SQL server (MySQL, PostgreSQL, etc.)
has a corresponding SDD. SDD driver implements a specific part of data
exchange interface between SQLBASE and SQL server.



3. Modifying database

   SSI presents a query result via RDD interface and generates no hidden
SQL queries. So, how database can be changed? Does dbAppend() and FieldPut()
works, or is it readonly SQL interface?
   dbAppend(), FieldPut() and other similiar functions work on cached query
result, i.e. query can be appended by new rows and field values can be
changed, but SQL database is not changed. dbCreate() function can also be
used to create an "empty query result" but no table is created on SQL server.
So, SSI can also be used as implementation of "array RDD".
   The programmer must call SQL command explicitly to modify SQL tables.
SSI provides a method to detect which cached rows was changed or appended.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Karine Lima Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 27 Set 2013 10:38
Localização: Limeira-SP

Comando SQL x XBASE

Mensagem por Karine Lima Almeida »

entendi Itamar,
só que por exemplo eu carrego uma TBROWSE, ai eu vou adicionando os valores as suas respectivas colunas, so que ele carrega todos os campos no select * tabela
existe algum parâmetro para ele ignorar o RECNO e o IS_DELETED.
e ainda tem como importar um dbf para mysql com alguma ferramenta do SQLMIX. (é que essas opções são disponíveis no Mediator)
uma duvida o "set index to" não funciona , tentei e não consegui.

obrigada a todos pela ajuda estou gostando muito do sqlmix.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Comando SQL x XBASE

Mensagem por janio »

só que por exemplo eu carrego uma TBROWSE, ai eu vou adicionando os valores as suas respectivas colunas, so que ele carrega todos os campos no select * tabela
existe algum parâmetro para ele ignorar o RECNO e o IS_DELETED
Imagino q neste caso vc deve chamar apenas os campos q desejar mostrar no browse!

Select campo1, campo2, campo3... From tabela
e ainda tem como importar um dbf para mysql com alguma ferramenta do SQLMIX. (é que essas opções são disponíveis no Mediator)
Ja testou...

Use SeuDbf New Alias SeuAlias via "DBFCDX"

Select SeuAlias
DbGoTop()
Do While !Eof()
insere dados na tabela mysql
dbskip()
Enddo
uma duvida o "set index to" não funciona , tentei e não consegui.
Em consultas SQL nao eh necessario setar o indice como fazemos no harbour. Ele automaticamente procura pelo índice que mais se adapta a sua consulta
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Comando SQL x XBASE

Mensagem por JoséQuintas »

Talvez possam postar um exemplo de incluir/alterar uma data usando SQLMIX.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Comando SQL x XBASE

Mensagem por JoséQuintas »

Jãnio, sua primeira mensagem ficou sem resposta.

A velocidade do HD é cerca de 3Gb, enquanto a da rede costuma ser 100Mb
Isso dá 30 vezes de diferença, sem contar o cache de disco, que acelera muito mais.
Então uma coisa é o uso de DBF local, e outra coisa é o uso de DBF em rede.

Terminal service é a mesma velocidade de uso local e apesar de muito bom, depende de comprar licença para cada terminal.

Não chegou a comentar se o comparativo foi com DBFs em uso local ou rede.
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Comando SQL x XBASE

Mensagem por Itamar M. Lins Jr. »

Talvez possam postar um exemplo de incluir/alterar uma data usando SQLMIX.

Código: Selecionar todos

#require "rddsql"
#require "sddmy"

#include "dbinfo.ch"
#include "error.ch"

REQUEST SDDMY
REQUEST SQLMIX

ANNOUNCE RDDSYS

FIELD RESIDENTS

PROCEDURE Main()
cls
#if defined( __HBSCRIPT__HBSHELL )
   rddRegister( "SQLBASE" )
   rddRegister( "SQLMIX" )
   hb_SDDMY_Register()
#endif

   rddSetDefault( "SQLMIX" )

   ? "RDDs:"; AEval( rddList(), {| x | QQOut( "", x ) } )

   IF rddInfo( RDDI_CONNECT, { "mysql", "localhost", "root","mysql", "test" } ) == 0
      ? "Could not connect to server", rddInfo( RDDI_ERRORNO ), rddInfo( RDDI_ERROR )
      RETURN
   ENDIF

   CreateTable()

   ? "Let's browse table (press any key)"
   Inkey( 0 )
   dbUseArea( .T., , "SELECT * FROM country", "country" )
   Browse()

   ? "Let's browse table ordered by resident count (press any key)"
   Inkey( 0 )
   INDEX ON field->RESIDENTS TAG residents TO country
   Browse()

   dbCloseAll()

   RETURN

STATIC PROCEDURE CreateTable()
LOCAL xData := SET( _SET_DATEFORMAT, "yyyy-mm-dd" )
? xDT := hb_tstostr(hb_datetime())
   ? rddInfo( RDDI_EXECUTE, "DROP TABLE country" )
   ? rddInfo( RDDI_EXECUTE, "CREATE TABLE country (CODE char(3), NAME char(50), RESIDENTS int(11), NASCIDO datetime )" )
   ? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600, '"+xDT+"'), ('USA', 'United States of America', 305397000, '2015-06-22'), ('POR', 'Portugal', 10617600, '2015-06-22'), ('POL', 'Poland', 38115967, '2015-06-22'), ('AUS', 'Australia', 21446187, '2015-06-22'), ('FRA', 'France', 64473140, '2015-06-22'), ('RUS', 'Russia', 141900000,'"+xDT+"')" )

SET( _SET_DATEFORMAT, xData)

RETURN

Criar e incluir, alterar é redundância, com DATETIME para não ter CHORO!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Comando SQL x XBASE

Mensagem por JoséQuintas »

Não foi isso que eu quis dizer, mas não me expliquei direito.
Seria usando variáveis, e não dados fixos.
Apenas comentário: Neste mesmo tópico você já havia postado um exemplo desse tipo.

De qualquer forma postei um exemplo de SQLMIX em contribuições.
Pode aproveitar e avisar caso eu tenha errado em alguma coisa.

Aqui:
https://pctoledo.org/forum/viewto ... 259#p97576
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Comando SQL x XBASE

Mensagem por Itamar M. Lins Jr. »

Neste caso, como sempre... Invertendo ou escondendo o jogo.
Eu não falei que ADO é melhor ou pior que coisa alguma.
Eu estou dizendo que prefiro usar SQLMIX.
Porquê ? Bem para demonstrar isso é mais simples ainda...
É impossível vc ou qualquer outro fazer isso com ADO.

Código: Selecionar todos

dbUseArea( .T., , "SELECT * FROM country", "country" )
BROWSE()
Para fazer isso, é preciso criar alguma coisa, para fazer a mesma coisa que o SQLMIX está fazendo. Quanto a rotina de GRAVAR/ALTERAR é SQL e temos que fazer a formatação dos dados, que é a mesma coisa do ADO e outros acessos nativos. Mas neste caso todas as linguagens fazem algo similar.
Já tem meses nesta discussão inútil... Vc se prendendo na parte de formatação dos dados e eu demonstrando que por mais que vc queira o RecordSet, não é DBF!
Minha pequena rotina de hoje, pra opção de DBF e MySQL.

Código: Selecionar todos

cFileDbf := "corre" + Right( StrZero( nCont, 4 ), 2 )
    IF .NOT. File( cFileDbf + ".DBF" )
      cnMySql:cSql := "SELECT * FROM CORRENTE WHERE ANOBASE=" + StringSql( StrZero( nCont, 4 ) ) + " AND LOCOD=" + Ltrim( Str( mLocad00Cod ) ) + ;
       " ORDER BY ANOBASE, LOCOD, NEXTRA, DB, DATA"
      cnMySql:Execute()
      cFileDbf := cnMySql:SqlToDbf( .T. )
      cnMySql:Rs:Close()
    ENDIF
Relendo tudo novamente para transformar em DBF, reinventando a roda simplesmente para não da o braço a torcer.
Por mais que vc queira esconder, não tem MOVEFIRST(), MOVENEXT, MOVELAST()..., vc está reescrevendo tudo que o SQLMIX faz transparentemente apenas para provar sua afirmação;

Código: Selecionar todos

METHOD SQLToDBF() CLASS ADOClass
 LOCAL nSelect, cDbfFile, nCont
 nSelect := Select()
 cDbfFile := MyTempFile( "dbf" )
 SELECT 0
 dbCreate( cDbfFile, ::oStructure )
 USE ( cDbfFile ) ALIAS SqlToDbf
 DO WHILE .NOT. ::Rs:Eof()
   RecAppend()
   FOR nCont = 1 TO Len( ::oStructure )
    DO CASE
    CASE ::oStructure[ nCont, 2 ] == "N"
      FieldPut( nCont, ::NumberSql( ::oStructure[ nCont, 1 ] ) )
    CASE ::oStructure[ nCont, 2 ] == "D"
      FieldPut( nCont, ::DateSql( ::oStructure[ nCont, 1 ] ) )
    OTHERWISE
      FieldPut( nCont, ::StringSql( ::oStructure[ nCont, 1 ] ) )
    ENDCASE
   NEXT
   ::Rs:MoveNext()
 ENDDO
 ::Rs:Close()
 USE
 SELECT ( nSelect )
 RETURN cDbfFile
Esses códigos para transformar em DBF, ou simular no RecordSet um DBF...

Código: Selecionar todos

METHOD MoveFirst() CLASS frmCadastroClass
 IF ::cnMySql == NIL
   GOTO TOP
 ELSE
   ::cnMySql:cSql := "SELECT " + ::cMySqlField + " FROM " + ::cMySqlTable + " ORDER BY " + ::cMySqlField + " LIMIT 1"
   ::cn:Execute()
   IF .NOT. ::cn:Eof()
    ::axKeyValue[ 1 ] := ::cn:StringSql( ::cMySqlField )
   ENDIF
   ::cn:rs:Close()
 ENDIF
 RETURN NIL
Vai rodar, rodar e acabar fazendo um SQLMIX a lá Quintas!!! e depois ir dizendo que é tudo igual.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Comando SQL x XBASE

Mensagem por JoséQuintas »

Itamar:

Pare de ficar poluindo tópicos com copiar/colar.

Já criei um tutorial completo com tudo que todo mundo precisa saber, não há mais nada a acrescentar ou retirar.

O fato de você fugir do exemplo é que está esquisito.
Prefere postar centenas de textos, do que mostrar um exemplo.

Quero que mostre sua inclusão com variáveis numérica, caractere e data.
A partir daí, os exemplos de SQLMIX vão estar completos.
Não é mais simples isso?

Não teremos mais nada a comentar sobre ADO ou SQLMIX, e a poluição acabará.
E as três funções que postei vão se mostrar úteis - dependendo do seu exemplo, é claro.
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Comando SQL x XBASE

Mensagem por JoséQuintas »

Em todo caso, novamente vou questionar o que você postou.
Explicar direitinho pra você entender.

Estou falando sobre PROGRAMAÇÃO.

Quando usamos uma LIB, apenas usamos e não vemos os fontes.
Parte do que postei passou a fazer parte da minha LIB, então não faz parte do fonte de trabalho.

Apenas questão de PROGRAMAÇÃO, não questão de ser melhor ou pior.

Você pode até estar certo, mas está usando argumentos errados.

Entendeu ou precisa desenhar?

Em todo caso, vamos desenhar....

É como você falar que Linux é melhor porque roda no computador.
Dizendo isso, vou discordar porque o Windows também roda no computador.
E você ficar postando exemplos e mais exemplos, e não concordando que o Windows também roda no computador, e a cada post, mais um argumento errado.

Estou questionando seus argumentos, e não a questão de ser melhor ou pior.

O desenho serviu pra entender?

Reveja seus posts e veja que sempre questiono sobre o que posta, e não sobre melhor ou pior.

Tem essa questão também, pra deixar tudo resolvido.

Só não postar besteira, que não questiono.
Mas ficar poluindo post é que não dá.

Qualquer coisa, abrimos um tópico no bate papo, e vamos resolvendo uma questão de cada vez, até acabar com essa história e com a poluição.
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Comando SQL x XBASE

Mensagem por Itamar M. Lins Jr. »

???? Mas esses códigos são seus!
Vc que disse/escreveu isso...
Disse que ADO e SQLMIX são iguais... Agora não é mais ?
Tá bom...

Tudo que coloquei sobre SQLMIX vc posta dizendo que ADO faz isso ou aquilo...
Tem vários posts que vc abriu sobe SQLMIX mas não explica nada só faz falar mal do SQLMIX ou dizer que é tudo igual.
E agora eu é que não explico... Veja, quem começou a história toda não foi eu não sobre SQLMIX x ADO, eu não me preocupo com isso...
Porque sabemos que temos que atender a gregos e troianos.
Quem está perguntado como SQLMIX funciona é vc ou sou eu ? Agora veja se eu te perguntei como ADO funciona ?
Quem está questionando os exemplos que tem sobre SQLMIX, dizendo que estão incompletos... ?
SQLMIX, RDDADO e ADOxb são bibliotecas intermediárias, que ficam entre o ADO e o programa.
Elas usam o ADO do jeito errado, igual DBF, deixando tudo mais lento.

Vc que escreveu isso ai em cima não fui eu não viu...
Nem isso aqui...
Veja, não sou eu que estou dizendo, é o seu roteiro, que até omite algumas partes:

Precisa instalar programa pra baixar do github
Precisa baixar os fontes do Harbour
precisa baixar compilador C
precisa baixar e instalar o servidor MySQL na máquina antes de gerar o Harbour
precisa configurar harbour, compilador c, pra gerar o Harbour
Quando sabemos que só precisamos dos fontes do Harbour e do Mysql ? quem está bagunçando o post sou eu ?
Quem está falando mal do que estou postando sobre SQLMIX sou eu ?
A mesma coisa quando postei da HBIDE que vc não concorda e dai ? Porque ela trava quando vc usa, e não dá os mesmos problemas com os outros...Vc é o dono da verdade ? Quer comparar um IDE obsoleta para códigos em VB... com a HBIDE que é a IDE padrão para o Harbour pelo menos se propõe ser. faz uma bagunça e depois quer mudar tudo e dizer que sou eu... Tá bom então.

Olhe como são suas palavras
Já criei um tutorial completo com tudo que todo mundo precisa saber, não há mais nada a acrescentar ou retirar.
Poxa!!! ai, ai,ai... coitado desse simples mortal que vos escreve!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Comando SQL x XBASE

Mensagem por JoséQuintas »

Não tem jeito, até VB e HBIDE entraram no post agora. Gosta de poluir mesmo.

Tá mesmo fugindo do exemplo de inclusão com variável, não sei porque.

Só lembrando: se existe algum problema no tutorial, poste lá pra que o "desenvolvedor" faça a correção, e não aqui.
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Comando SQL x XBASE

Mensagem por Itamar M. Lins Jr. »

Vc pediu!
incluir/alterar uma data usando SQLMIX.

Código: Selecionar todos

? xDT := hb_tstostr(hb_datetime())
xDT é uma variável ou não é Lombardi... ?

Código: Selecionar todos

? rddinfo( RDDI_EXECUTE, "CREATE TABLE country ...  NASCIDO datetime)")
? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600, '"+xDT+"'), ...
O INSERT está usando uma variável ou não está usando Lombardi... ?
Para alterar é só usar UPDATE com xDT... é ou não é Silvio...?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Comando SQL x XBASE

Mensagem por JoséQuintas »

Aleluia.

Pois é, deixou a conversão fora do comando, mas mostrou que precisa converter e colocar entre aspas no comando.

Isso apenas mostra que uma função de conversão pode facilitar, independente do que esteja usando.
Era esse meu questionamento e nada mais, quando mencionou as funções em post anterior.

Mas finalmente postou, obrigado

Nota:
Que eu saiba, não se pode gravar data zerada no MySQL, igual se fazia em versões anteriores.
Mesmo habilitando na configuração (Strict Mode), ele até deixa gravar, mas depois dá erro em consulta.
Nesse caso é onde uso o NULL, como pode ver na função.
Por acaso criaram alguma opção adicional pra isso? Ou isso é particularidade do campo Date, e não do DateTime?
Seria um motivo a mais pra usar uma função de conversão.
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