Comando SQL x XBASE
Moderador: Moderadores
- Karine Lima Almeida
- Usuário Nível 1

- Mensagens: 25
- Registrado em: 27 Set 2013 10:38
- Localização: Limeira-SP
Comando SQL x XBASE
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?
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?
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Comando SQL x XBASE
Ola!
Consultas ? Neste caso vai precisar mudar pouco.
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.
Saudações,
Itamar M. Lins Jr.
Consultas ? Neste caso vai precisar mudar pouco.
Código: Selecionar todos
dbUseArea( .T., , "SELECT * FROM country", "country" )
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.
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Karine Lima Almeida
- Usuário Nível 1

- Mensagens: 25
- Registrado em: 27 Set 2013 10:38
- Localização: Limeira-SP
Comando SQL x XBASE
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.
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.
Comando SQL x XBASE
Imagino q neste caso vc deve chamar apenas os campos q desejar mostrar no browse!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
Select campo1, campo2, campo3... From tabela
Ja testou...e ainda tem como importar um dbf para mysql com alguma ferramenta do SQLMIX. (é que essas opções são disponíveis no Mediator)
Use SeuDbf New Alias SeuAlias via "DBFCDX"
Select SeuAlias
DbGoTop()
Do While !Eof()
insere dados na tabela mysql
dbskip()
Enddo
Em consultas SQL nao eh necessario setar o indice como fazemos no harbour. Ele automaticamente procura pelo índice que mais se adapta a sua consultauma duvida o "set index to" não funciona , tentei e não consegui.
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando SQL x XBASE
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando SQL x XBASE
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.
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Comando SQL x XBASE
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
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando SQL x XBASE
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
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Comando SQL x XBASE
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.
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!
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;
Esses códigos para transformar em DBF, ou simular no RecordSet um DBF...
Vai rodar, rodar e acabar fazendo um SQLMIX a lá Quintas!!! e depois ir dizendo que é tudo igual.
Saudações,
Itamar M. Lins Jr.
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()
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
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
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
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando SQL x XBASE
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.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando SQL x XBASE
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.
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Comando SQL x XBASE
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... ?
Vc que escreveu isso ai em cima não fui eu não viu...
Nem isso aqui...
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
Saudações,
Itamar M. Lins Jr.
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...
Quando sabemos que só precisamos dos fontes do Harbour e do Mysql ? quem está bagunçando o post sou eu ?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
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
Poxa!!! ai, ai,ai... coitado desse simples mortal que vos escreve!Já criei um tutorial completo com tudo que todo mundo precisa saber, não há mais nada a acrescentar ou retirar.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando SQL x XBASE
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.
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Comando SQL x XBASE
Vc pediu!
xDT é uma variável ou não é Lombardi... ?
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.
incluir/alterar uma data usando SQLMIX.
Código: Selecionar todos
? xDT := hb_tstostr(hb_datetime())
Código: Selecionar todos
? rddinfo( RDDI_EXECUTE, "CREATE TABLE country ... NASCIDO datetime)")
? rddInfo( RDDI_EXECUTE, "INSERT INTO country values ('LTU', 'Lithuania', 3369600, '"+xDT+"'), ...
Para alterar é só usar UPDATE com xDT... é ou não é Silvio...?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Comando SQL x XBASE
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.
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/
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/
