Página 1 de 1
dicas para MYSQL com ADORDD
Enviado: 12 Jul 2013 23:59
por dbsh
Código: Selecionar todos
PROCEDURE Teste1( sServ, sDataBase, sTabela, sUser, sPass, sQuery, sAlias)
DEFAULT sServ TO "localhost"
DEFAULT sDatabase TO "soserv"
DEFAULT sUser TO "root"
DEFAULT sPass TO "root"
DEFAULT sAlias TO sDatabase
//query para excluir tabela se ela existir
sQuery := "DROP TABLE IF EXISTS `inigrupo`;"
USE (sDataBase) ALIAS inigrupo VIA "ADORDD" QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW
//query para criar a tabela
sQuery := "CREATE TABLE `inigrupo` (" ;
+ " `id` int(11) NOT NULL AUTO_INCREMENT," ;
+ " `grupo` varchar(30) NOT NULL," ;
+ " `descricao` varchar(100) NOT NULL," ;
+ " PRIMARY KEY (`id`)," ;
+ " UNIQUE KEY `grupo` (`grupo`)" ;
+ ") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;"
USE (sDataBase) Alias inigrupo VIA "ADORDD" QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW
//query para incluir registro
sQuery := "INSERT INTO `inigrupo` (`id`, `grupo`, `descricao`) VALUES " ;
+ " (1, 'USUARIO', 'configuracoes personalizadas do usuario')," ;
+ " (2, 'MAQUINA', 'configuracoes personalizadas da maquina cliente TS')," ;
+ " (3, 'SISTEMA', 'configuracoes geral do sistema');"
USE (sDataBase) Alias inigrupo VIA "ADORDD" QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW
//pode ignorar o campo auto_icrement
sQuery := "INSERT INTO `inigrupo` (`grupo`, `descricao`) VALUES " ;
+ " ('SECAO_TS', 'configuracoes temporaria por secao, terminal service, ao fechar secao inicializa')," ;
+ " ('TEMPORARIA', 'configuracoes temporaria por execucao, ao sair do sistema inicializa')," ;
+ " ('OUTRAS', 'outras configuracoes, EX: cliente, fornecedor,...');"
USE (sDataBase) ALIAS inigrupo VIA "ADORDD" QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW
//recuperar id de campo auto_icrement, deve ser executado logo apos um insert
sQuery := "SELECT LAST_INSERT_ID() as last_id;"
USE (sDataBase) Alias ultimo_id VIA "ADORDD" QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW
? Field->last_id //ultimo valor do campo auto_increment
//visualizar todas tabelas de um DB
sQuery := "SHOW TABLES;"
USE (sDataBase) ALIAS todas_tabelas VIA "ADORDD" QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW
GO TOP
WHILE !Eof()
? "ARQUIVO " + FieldGet(1)
IF RecNo() % 20
wait
cls
ENDIF
skip
ENDDO
USE (sDataBase) ALIAS (sAlias) VIA "ADORDD" TABLE (sTabela) QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW
RETURN
dicas para MYSQL com ADORDD
Enviado: 15 Jul 2013 19:26
por dbsh
Código: Selecionar todos
//visualizar todos DB existente no MYSQL
sQuery := "SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA;"
USE (sDataBase) ALIAS todas_tabelas VIA "ADORDD" QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW
GO TOP
WHILE !Eof()
? "ARQUIVO " + Field->schema_name
IF RecNo() % 20
wait
cls
ENDIF
skip
ENDDO
dicas para MYSQL com ADORDD
Enviado: 11 Dez 2013 13:52
por JoséQuintas
Não deixa de ser interessante.
Eu ainda fico na dúvida sobre a melhor forma de uso.
Já usei via ADORDD e direto no ADO.
Direto no ADO seria algo assim:
Código: Selecionar todos
cnConexao := CreateObject("ADODB.Connection")
cnConexao:ConnectionString := "sdhdfsdksdkfhds"
cnConexao:Open()
cnConexao:Execute( "INSERT INTO ..." )
rsMySql := cnConexao:Execute( "SELECT * FROM ..." )
DO WHILE .NOT. rsMySql:Eof()
? rsMySql:Fields( "CODIGO" ):Value
rsMySql:MoveNext()
ENDDO
cnConexao:Close()
A parte mais chata continua sendo tratar campos com conteúdo NULL ( NULL no MySql = NIL no Harbour)
Pra quem não sabe, em um servidor SQL qualquer campo pode ser NIL.
Então, valor + 5 pode dar erro, porque valor no banco de dados pode ser NIL, o que é NADA, e não equivale a zero.
dicas para MYSQL com ADORDD
Enviado: 23 Ago 2014 22:09
por Mário Isa
Ao tentar conectar no banco deu a msg:
Error ADODB.Connection/0 S_OK: OPEN Arguments: ( [ 1] = Type: C Val: DRIVER={MySQL ODBC 3.51 Driver};server=meuip;database=nomedobanco;uid=nomedeusuario;pwd=senhadobanco)
eu fiz:
USE nomedobanco VIA "ADORDD" TABLE "nomedatabela" MYSQL FROM "IP" USER "nomedeusuario" PASSWORD "senhadobanco"
E eu sei que o banco que quero abrir é Mysql 5.1.
Alguém sabe se preciso setar o ADORDD para 5.1 e como faria isso ?
Mário
dicas para MYSQL com ADORDD
Enviado: 24 Ago 2014 12:17
por JoséQuintas
Aqui conecto normalmente com MySql 5.1 usando odbc 3.51 - mas direto, sem RDDADO.
Tá parecendo alguma coisa errada nos dados da conexão.
dicas para MYSQL com ADORDD
Enviado: 25 Ago 2014 20:06
por Mário Isa
utilizei o exemplo do colega acima :
Código: Selecionar todos
sQuery := "INSERT INTO 'nomedatabela' ('clienteid', 'nome') VALUES (74, 'USUARIO')"
USE nomedobanco VIA "ADORDD" QUERY (sQuery) MYSQL FROM "meuip" USER "usuariodobanco" PASSWORD "senhadobanco"
use
para tentar incluir o registro mas deu esse erro :
Error ADODB.Recordset/6 DISP_E_UNKNOWNNAME: OPEN Arguments: ( [ 1] = Type: C Val: INSERT INTO 'clientes' ('clienteid', 'nome') VALUES (74, 'USUARIO') [ 2] = Type: O Val: { TOLEAUTO Object })
Onde será q eu errei ?
Mário
´o)
dicas para MYSQL com ADORDD
Enviado: 25 Ago 2014 20:26
por JoséQuintas
Uma ferramenta interessante é o HeidiSql, que permite executar comandos SQL no banco de dados MySql.
Costumo usar:
Código: Selecionar todos
INSERT INTO TABELA ( CAMPO1, CAMPO2 ) VALUES ( 'string1', 'string2' )
Aspas Simples - delimitam string
Aspas Duplas - versões mais novas de MySql aceitam pra delimitar string
Apóstrofo - delimitam campos, nomes de tabelas, etc. - não confundir com string e aspas simples
Me pareceu que usou aspas simples para nomes internos do banco de dados, ao invés de apóstrofo.
E pensando bem, o erro também sugere isso: Type C Val, foi considerado Character/String
Ou... se é ADORDD, provavelmente o uso de aspas onde não deveria.
dicas para MYSQL com ADORDD
Enviado: 25 Ago 2014 22:44
por alxsts
Olá!
Mário Isa escreveu:sQuery := "INSERT INTO 'nomedatabela' ('clienteid', 'nome') VALUES (74, 'USUARIO')"
O problema está no nome da tabela e dos campos. Eles não vão entre aspas ou apóstrofos. O correto é isto:
Código: Selecionar todos
sQuery := "INSERT INTO nomedatabela (clienteid, nome) VALUES (74, 'USUARIO')"
ou
Código: Selecionar todos
LOCAL nCustID, cUserID
nCustID := 74
cUserID := "USUARIO"
sQuery := "INSERT INTO nomedatabela (clienteid, nome) VALUES (" + Ltrim(Str(nCustID)) + ", '" + cUserID + "')"
dicas para MYSQL com ADORDD
Enviado: 26 Ago 2014 19:26
por Mário Isa
fiz com
Código: Selecionar todos
sQuery := "INSERT INTO clientes (clienteid, nome) VALUES (74, 'USUARIO')"
Deu erro:
Error ADODB.Recordset/6 DISP_E_UNKNOWNNAME: OPEN Arguments: ( [ 1] = Type: C Val: INSERT INTO clientes (clienteid, nome) VALUES (74, 'USUARIO') [ 2] = Type: O Val: { TOLEAUTO Object })
Fiz com:
Código: Selecionar todos
sQuery := "INSERT INTO `clientes` (`clienteid`, `nome`) VALUES (74, 'USUARIO')"
Error ADODB.Recordset/6 DISP_E_UNKNOWNNAME: OPEN Arguments: ( [ 1] = Type: C Val: INSERT INTO `clientes` (`clienteid`, `nome`) VALUES (74, 'USUARIO') [ 2] = Type: O Val: { TOLEAUTO Object })
Falta enviar algum parâmetro ??
:(Neg
dicas para MYSQL com ADORDD
Enviado: 26 Ago 2014 19:37
por alxsts
Olá!
Poderia mostrar um pouco mais do teu código? É possível que o problema esteja na forma como você está se conectando ao banco de dados. Poste o código de conexão (evite postar senhas).
dicas para MYSQL com ADORDD
Enviado: 26 Ago 2014 21:20
por Mário Isa
O início do código
Código: Selecionar todos
#include "memoedit.ch"
#include "Directry.ch"
#include "common.ch"
#include "inkey.ch"
#include "Fileio.ch"
#include "hbgtinfo.ch"
#include "Dbstruct.ch"
#INCLUDE "GTINFO.CH"
#INCLUDE "wingdi.ch"
#INCLUDE "winuser.ch"
#INCLUDE "COMMCTRL.CH"
#include "adordd.ch"
REQUEST HB_GT_WIN
REQUEST HB_LANG_PT
REQUEST ADORDD
//--------------------------------------------------------->
Function Main(comofaz)
LOCAL oPop, oPart, aParts, oTIpMail, aEmails, i
public a_firma := {} , as_escolhida := {}
public is_conecstoq := is_conecshop := .f.
public ctahora := seconds() , ctapara := seconds() , ctarastro := -10000
// h t t p d o c s
public oresftp := 'resulftp.txt'
public is_conectado := .f.
public vai_faz_bak := .t.
ambiente()
public qq_compacta :='rar'
crlf := chr(13)+chr(10)
qq_descompacta := 'rar'
set(39,159)
set conf on
set date brit
set epoch to 1950
set deleted on
set century on
set exact on
set exclusive off
cores()
*-**-*
altd()
testesql()
.
.
.
.
A função testesql()
Código: Selecionar todos
function testesql()
wait "aguarda"
altd()
//sQuery := "SHOW TABLES;"
/*USE (sDataBase) ALIAS todas_tabelas VIA "ADORDD" QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW*/
/*USE isashop1 ALIAS tessql VIA "ADORDD" TABLE "clientes" MYSQL FROM "meuip" USER "nomedousuario" PASSWORD "senha" NEW
locate for clienteid = 54*/
/*USE (sDataBase) ALIAS (sAlias) VIA "ADORDD" TABLE (sTabela) QUERY (sQuery) MYSQL ;
FROM (sServ) USER (sUser) PASSWORD (sPass) NEW*/
//sQuery := "INSERT INTO 'clientes' ('clienteid', 'nome') VALUES (74, 'USUARIO')"
//sQuery := 'INSERT INTO clientes (clienteid, nome) VALUES (74, "USUARIO");'
//sQuery := "INSERT INTO `clientes` (`clienteid`, `nome`) VALUES (74, 'USUARIO')"
USE nomedobanco VIA "ADORDD" QUERY (sQuery) TABLE ("clientes") MYSQL FROM "meuip" USER "nomedousuario" PASSWORD "senha"
use
USE nomedobanco VIA "ADORDD" TABLE "produtos" MYSQL FROM "meuip" USER "nomedousuario" PASSWORD "senha"
browse()
//locate for id = 68 // funcionou muito bem
//Browse()
//USE
quit
/* USE test00 VIA "ADORDD" TABLE "ACCOUNTS" MYSQL ;
FROM "www.freesql.org" USER "myuser" PASSWORD "mypass"
Browse()
USE*/
return .t.
dicas para MYSQL com ADORDD
Enviado: 26 Ago 2014 21:23
por Mário Isa
José Quintas disse:
direto no ADO
para fazer "direto no ADO" tem que ter a .LIB ??
:-´
dicas para MYSQL com ADORDD
Enviado: 26 Ago 2014 21:28
por Mário Isa
Agora eu descobri que, apesar de dar o erro, ele chega a incluir os dados no banco.
veja:
Logo abaixo do cliente 73 ele incluiu o 74.
Mas persiste o erro.
Mário
dicas para MYSQL com ADORDD
Enviado: 26 Ago 2014 22:50
por Mário Isa
De qualquer forma, até onde pude entender, toda instrução SQL termina com ";"
sendo assim esta funcionou para inserir o registro:
Código: Selecionar todos
sQuery := 'INSERT INTO clientes (clienteid, nome) VALUES (74, "USUARIO");'
apesar de ainda dar o erro no final, com esta instrução ele chega a incluir o registro.
Meus progressos:
Consegui fazer isso:
Código: Selecionar todos
USE nomedobanco VIA "ADORDD" TABLE "nomedatabela" MYSQL FROM "meuip" USER "usuariodobanco" PASSWORD "senhadobanco"
dbgoto(5) //fui para o registro 5
replace preco with "259,90" //gravei o campo preco como "259,90"
altd()
use // fechou o banco
Mas na hora do
append blank
:(Neg
O programa parou de funcionar.
