Jessica07 0 Denunciar post Postado Janeiro 19, 2015 Boa tarde, Estava precisando de uma ajuda pra conectar o mysql com o delphi, se puder ajudar agradeço. Já copiei um arquivo para o delphi reconhecer os drivers do mysql 5.5. Coloquei aquele componente TSQLConnection no meu data module, criei uma nova conexao no delphi, coloquei o servidor, o nome do meu database, usuario e a senha, testei a conexao e tudo ok. Mas quando eu coloco o componente TSQLTable, na propriedade SQLConnection eu coloco o nome da minha conexao, mas quando vou selecionar a propriedade TableName, minhas tabelas nao aparecem. Eu criei o database atraves do mysqlfront, só nao estou entendendo o pq nao mostra minhas tabelas. Estou fazendo algo errado? Quando eu seleciono o meu database e seleciono para mostrar uma tabela, era pra estar aparecendo no command line nao era? Não consigo achar o erro. Desde já agradeço. Obrigada. Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Janeiro 21, 2015 Olá! Tudo jóia? Vamos por partes. O primeiro ponto, qual a versão do Delphi você está utilizando? Basicamente, o que você precisaria fazer é: 1- Ter um componente SQLConnection apontando para o driver do MySQL e configurado com as propriedades básicas do seu servidor, que seriam: Host: Servidor a qual o MySQL está rodando. User: Usuário que você cadastrou no banco de dados. Caso não tenha feito, o MySQL assumirá como root. Pass: A senha que você cadastrou no banco de dados. Caso não tenha feito, o MySQL assumirá em branco. Port: Por padrão, seria a 3306. 2) Ter um componente SQLTable ou SQLQuery com a propriedade Connection apontada para o seu SQLConnection acima. Basicamente seria isso. Se você puder, anexe seu exemplo e envie para que eu possa analisar e tentar te ajudar. Até a próxima. Compartilhar este post Link para o post Compartilhar em outros sites
Jessica07 0 Denunciar post Postado Janeiro 21, 2015 Bom dia, Consegui fazer a conexão usando o componente ZEOS :) Porem agora estou com outro problema na hora de inserir os registros. Quando vou inserir os registros na tabela, aparece um erro falando que o valor inteiro é invalido. Esse é o codigo no qual estou usando: dmPrincipal.qClientes.Close; dmPrincipal.qClientes.SQL.Clear; dmPrincipal.qClientes.SQL.Add('insert into clientes'); dmPrincipal.qClientes.SQL.Add('(id_cli, cli_nome, cli_documento, cli_fantasia, cli_endereco, cli_bairro, cli_cidade, cli_cep, cli_uf, cli_tel, cli_fax, cli_cel, cli_obs, cli_email, cli_dtCadastro, cli_pessoa, id_vend, cli_contato)'); dmPrincipal.qClientes.SQL.Add('values (:pId_cli, :pCli_nome, :pCli_documento, :pCli_fantasia, :pCli_endereco, :pCli_bairro, :pCli_cidade, :pCli_cep, :pCli_uf, :pCli_tel, :pCli_fax, :pCli_cel, :pCli_obs, :pCli_email, :pCli_dtCadastro, :pCli_pessoa, :pId_vend, :pcli_contato)'); dmPrincipal.qClientes.ParamByName('pId_cli').AsInteger:= StrToInt(dbe_idCli.Text); dmPrincipal.qClientes.ParamByName('pCli_nome').AsString:= dbe_CliNome.Text; dmPrincipal.qClientes.ParamByName('pCli_documento').AsString:= dbe_CliDocumento.Text; dmPrincipal.qClientes.ParamByName('pCli_fantasia').AsString:= dbe_CliFantasia.Text; dmPrincipal.qClientes.ParamByName('pCli_endereco').AsString:= dbe_CliEndereco.Text; dmPrincipal.qClientes.ParamByName('pCli_bairro').AsString:= dbe_CliBairro.Text; dmPrincipal.qClientes.ParamByName('pCli_cidade').AsString:= dbe_CliCidade.Text; dmPrincipal.qClientes.ParamByName('pCli_cep').AsString:= dbe_CliCep.Text; dmPrincipal.qClientes.ParamByName('pCli_uf').AsString:= dbe_CliUf.Text; dmPrincipal.qClientes.ParamByName('pCli_tel').AsString:= dbe_CliTel.Text; dmPrincipal.qClientes.ParamByName('pCli_fax').AsString:= dbe_CliFax.Text; dmPrincipal.qClientes.ParamByName('pCli_cel').AsString:= dbe_CliCel.Text; dmPrincipal.qClientes.ParamByName('pCli_obs').AsString:= dbm_CliObs.Text; dmPrincipal.qClientes.ParamByName('pCli_email').AsString:= dbe_CliEmail.Text; dmPrincipal.qClientes.ParamByName('pCli_dtCadastro').AsDate:= StrToDate(dbe_ClidtCad.Text); dmPrincipal.qClientes.ParamByName('pCli_pessoa').AsString:= dcb_CliPessoa.Text; dmPrincipal.qClientes.ParamByName('pId_vend').AsInteger:= StrToInt(dbe_idVend.Text); dmPrincipal.qClientes.ParamByName('pcli_contato').AsString:= dbe_CliContato.Text; dmPrincipal.qClientes.ExecSQL; Apenas uma observação, o campo id_cli é integer e autoincremento.. Você poderia me ajudar? Desde já agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Janeiro 21, 2015 Olá, bom dia! No momento que você está executando essa instrução, você já possuí o número gerado pelo seu campo ID_CLI? Pergunto isso por que geralmente, o auto-incremento é disparado pelo próprio banco de dados na hora que os dados são gravados. Até então, a sua aplicação não sabe qual o número foi/será gerado ainda. Caso esse seja o problema, existem algumas maneiras de contornar isso, mas primeiro vamos detectar o causador para depois pensarmos na "cura". Compartilhar este post Link para o post Compartilhar em outros sites
Jessica07 0 Denunciar post Postado Janeiro 21, 2015 Então imaginei que seria por isso mesmo. Quando clico em NOVO o campo id_cli fica em branco, pq por ser autoincremento ele só vai gerar o codigo depois que eu salvar o cadastro. Eu teria que criar algum tipo de variavel pra ir incrementando o campo do código? Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Janeiro 21, 2015 Olá! O que você pode fazer é passar no "Values" do seu SQL o valor Null no lugar de :pId_cli e retirar a linha que contem o código dmPrincipal.qClientes.ParamByName('pId_cli').AsInteger:= StrToInt(dbe_idCli.Text); Assim, na hora que houver a gravação do registro, o banco de dados irá gerar seu próximo código normalmente e sua aplicação não terá problemas. Experimente e veja o que acha. Compartilhar este post Link para o post Compartilhar em outros sites
Jessica07 0 Denunciar post Postado Janeiro 21, 2015 Fiz essa troca da qual me falou, mas agora da outro erro :/ Fala que a data nao é valida. Mas no meu banco de dados coloquei que o campo dtCadastro poderia ser vazio. Para tentar resolver o problema, no meu edit dtCadastro, no evento onEnter, coloquei o seguinte código: dbe_dtCadastro.text:=DateToStr(Date()); Desta maneira a data ja vem automatica.. mas ainda sim fica dando o mesmo problemas. No meu cadastro, nem todos os campos sao obrigatorios. Se tiver algum campo em branco na hora de salvar, vai dar este problema de que o dado nao é valido? Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Janeiro 21, 2015 Olá! Como está definida o tipo da coluna a qual você armazena a data no seu banco de dados? Verifique se o tipo dessa coluna não está diferente de Date ou Timestamp. Se estiver, essa é a possível causa do problema, ou seja, você estaria tentando guardar uma informação de um tipo diferente da que ele aceita. As colunas da sua tabela que estiverem definidas com a restrição de "NOT NULL", são colunas aonde se torna obrigatório o preenchimento por parte do seu sistema. Quando essa mesma coluna vier sem a informação no momento de gravação, o erro retornado pelo seu programa deve ser uma mensagem com alguma informação "IS NOT NULL OR IS NOT EMPTY". Compartilhar este post Link para o post Compartilhar em outros sites
Jessica07 0 Denunciar post Postado Janeiro 24, 2015 Confirmei e o campo estava como data mesmo, nao sei pq o erro entao :/ Mas ja resolvi.. coloquei uma zTable para salvar os dados na tabela e usei o componente actionmanager para realizar esses comandos. Não sei se é aconselhavel, mas foi a unica maneira que achei para resolver. Obrigada. Compartilhar este post Link para o post Compartilhar em outros sites
Eisenheim 67 Denunciar post Postado Janeiro 26, 2015 Olá! Entendi, disponha. Edite o tópico e não esqueça de colocar [Resolvido] na frente do título. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites