Clipper On Line • Ver Tópico - Comando SQL x XBASE

Comando SQL x XBASE

Discussão sobre SQL

Moderador: Moderadores

 

Comando SQL x XBASE

Mensagempor Karine Lima Almeida » 18 Jun 2015 17:22

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 de usuário

Karine Lima Almeida
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 27 Set 2013 10:38
Cidade/Estado: Limeira-SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Comando SQL x XBASE

Mensagempor Itamar M. Lins Jr. » 18 Jun 2015 17:41

Ola!
Consultas ? Neste caso vai precisar mudar pouco.
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.
                    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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Comando SQL x XBASE

Mensagempor Karine Lima Almeida » 18 Jun 2015 17:53

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 de usuário

Karine Lima Almeida
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 27 Set 2013 10:38
Cidade/Estado: Limeira-SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Comando SQL x XBASE

Mensagempor janio » 18 Jun 2015 18:39

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 de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Comando SQL x XBASE

Mensagempor JoséQuintas » 19 Jun 2015 13:16

Talvez possam postar um exemplo de incluir/alterar uma data usando SQLMIX.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comando SQL x XBASE

Mensagempor JoséQuintas » 19 Jun 2015 16:57

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comando SQL x XBASE

Mensagempor Itamar M. Lins Jr. » 22 Jun 2015 16:08

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


#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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Comando SQL x XBASE

Mensagempor JoséQuintas » 22 Jun 2015 16:17

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:
http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=16259#p97576
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comando SQL x XBASE

Mensagempor Itamar M. Lins Jr. » 22 Jun 2015 17:17

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.

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.

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;
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...
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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Comando SQL x XBASE

Mensagempor JoséQuintas » 22 Jun 2015 18:32

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comando SQL x XBASE

Mensagempor JoséQuintas » 22 Jun 2015 18:53

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comando SQL x XBASE

Mensagempor Itamar M. Lins Jr. » 23 Jun 2015 12:41

Ué ???? 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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Comando SQL x XBASE

Mensagempor JoséQuintas » 23 Jun 2015 13:53

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Comando SQL x XBASE

Mensagempor Itamar M. Lins Jr. » 23 Jun 2015 14:12

Vc pediu!
incluir/alterar uma data usando SQLMIX.

? xDT := hb_tstostr(hb_datetime())

xDT é uma variável ou não é Lombardi... ?
? 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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Comando SQL x XBASE

Mensagempor JoséQuintas » 23 Jun 2015 14:44

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior Próximo



Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro