Jump to content
Fivewin Brasil

Inserir dados no BD mySql (Resolvido)


vmolina

Recommended Posts

Bom dia pesssoal,

Montei um função no meu fonte para inserir dados no BD Mysql através de formulário.

O que será que está havendo, pois não consigo inserir os dados no BD?

Desde já agradeço.

Segue código:

Function Cad_Func(oBrw,aResult)

Local oDlg,lGrava:=.f.

Local oGetLogin,oGetTelefone,oGetEndereco,oGetSenha

Local cLogin:=space(25),cTelefone:=space(10),cEndereco:=space(20),cSenha:=space(10)

DEFINE DIALOG oDlg RESOURCE "cad_func" TITLE "Cadastrar Funcionário" ICON "vitor_icone.ico"

REDEFINE GET oGetLogin VAR cLogin ID 105 OF oDlg

REDEFINE GET oGetTelefone VAR cTelefone ID 106 OF oDlg

REDEFINE GET oGetEndereco VAR cEndereco ID 107 OF oDlg

REDEFINE GET oGetSenha VAR cSenha ID 108 OF oDlg

REDEFINE BUTTON ID 109 OF oDlg ACTION (lGrava:=.t.,oDlg:end())

REDEFINE BUTTON ID 110 OF oDlg ACTION (lGrava:=.f.,oDlg:end())

ACTIVATE DIALOG oDlg CENTERED

IF lGrava:=.f.

RETURN

ENDIF

IF lGrava:=.t.

sql_cmd = "INSERT INTO cadastro (Login,Telefone,Endereco,Senha) VALUES (cLogin,cTelefone,cEndereco,cSenha)"

BEGIN TRANSACTION

SQLExecute(sql_cmd)

END TRANSACTION

COMMIT TRANSACTION

ENDIF

Return Nil

Att

Vitor Molina

vitormolina@gmail.com

FW 10.12 + xHarbour 1.2.1 (6717) | BCC 5.82

Editado por - vmolina on 24/01/2012 15:08:27

Link to comment
Share on other sites

Bom dia pesssoal,

Montei um função no meu fonte para inserir dados no BD Mysql através de formulário.

O que será que está havendo, pois não consigo inserir os dados no BD?

Desde já agradeço.

Segue código:

Function Cad_Func(oBrw,aResult)

Local oDlg,lGrava:=.f.

Local oGetLogin,oGetTelefone,oGetEndereco,oGetSenha

Local cLogin:=space(25),cTelefone:=space(10),cEndereco:=space(20),cSenha:=space(10)

DEFINE DIALOG oDlg RESOURCE "cad_func" TITLE "Cadastrar Funcionário" ICON "vitor_icone.ico"

REDEFINE GET oGetLogin VAR cLogin ID 105 OF oDlg

REDEFINE GET oGetTelefone VAR cTelefone ID 106 OF oDlg

REDEFINE GET oGetEndereco VAR cEndereco ID 107 OF oDlg

REDEFINE GET oGetSenha VAR cSenha ID 108 OF oDlg

REDEFINE BUTTON ID 109 OF oDlg ACTION (lGrava:=.t.,oDlg:end())

REDEFINE BUTTON ID 110 OF oDlg ACTION (lGrava:=.f.,oDlg:end())

ACTIVATE DIALOG oDlg CENTERED

IF lGrava:=.f.

RETURN

ENDIF

IF lGrava:=.t.

sql_cmd = "INSERT INTO cadastro (Login,Telefone,Endereco,Senha) VALUES (cLogin,cTelefone,cEndereco,cSenha)"

BEGIN TRANSACTION

SQLExecute(sql_cmd)

END TRANSACTION

COMMIT TRANSACTION

ENDIF

Return Nil

Att

Vitor Molina

vitormolina@gmail.com

FW 10.12 + xHarbour 1.2.1 (6717) | BCC 5.82

Editado por - vmolina on 24/01/2012 15:08:27

Link to comment
Share on other sites

BEGIN TRANSACTION

SQLExecute(sql_cmd)

END TRANSACTION

COMMIT TRANSACTION

--- nao seria assim:

essa ordem do commit ai ta errada.

primeiro inicia tansacao, comita, finaliza.

veja se é isso.

BEGIN TRANSACTION

SQLExecute(sql_cmd)

COMMIT TRANSACTION

END TRANSACTION

Gilmar Silva Santos

Programador - Goiânia Go

Não Recuarei, Nada Temerei, Comigo Está o Senhor.

Email : gilmarss2010@gmail.com

FWH 10.8, DBF, MED EDITOR, UESTUDIO, XHB 1.2, BCC 5.82

Link to comment
Share on other sites

Amigo, aparentemente a linha abaixo está incorreta:

sql_cmd = "INSERT INTO cadastro (Login,Telefone,Endereco,Senha) VALUES (cLogin,cTelefone,cEndereco,cSenha)"

tente assim:

sql_cmd = "INSERT INTO cadastro (Login,Telefone,Endereco,Senha) VALUES ('"+cLogin+"','"+cTelefone+"','"+cEndereco+"','"+cSenha+");"

Link to comment
Share on other sites

Lembre-se sempre de olhar o arquivo SQLLOG.TXT na pasta do seu executável, nele será gerado todo erro que o sql retornar.

Tem como você visualizar pelo sistema também, está no doc.

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Boa tarde pessoal, obrigado a todos pelas dicas.

1ºgss200610 - Troquei a posição da linhas COMIT e END TRANSACTION.

2ºJmsilva - Amigo só consegui enviar os dados depois que modifiquei os dados do VALUES ('"+cLogin+"','"+cTelefone+"','"+cEndereco+"','"+cSenha+"').

3ºeco_fw - Mais um vez orbigado pela dica Eco, ficou muito mais fácil encontrar o erro.

Att

Vitor Molina

vitormolina@gmail.com

FW 10.12 + xHarbour 1.2.1 (6717) | BCC 5.82 | Workshop V4.5

Link to comment
Share on other sites

Bom, o fórum seria um lugar mais feliz se todos voltassem para dizer se a dica deu certo ou não como você fez. =)

Bom vmolina, a dica do Jmsilva resolveu seu caso, mas é importante que você entenda o porque que a forma dele resolveu e o porque a sua forma estava incorreta.

Pelo jeito você está usando a sqllib certo?

Quando o campo da tabela for numérico, utilize a função SQLNTRIM, quando caracter, utilize SQLSTR, quando DATA, utilize a SQLDATE. Todas estas funções estão na documentação da LIB.

exemplo


cSQL:='INSERT INTO tbCLI (Cod,Nome,Data_Cad) VALUES ('+SQLNTRIM(nVarCodigo)+','+SQLSTR(cVarNome)+','+SQLDATE(dVarData)+')'

sqlExecute(cSQL)

id=code>id=code>

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Sempre agradeço as dicas e digo se deu certo, até porque outros poderão vir com a mesma dúvida e assim fica mais fácil aprender quando vc vê que o tópico foi resolvido.

Comecei a usar a SQLib a pouco tempo, aliás a programação fivewin comecei tb a pouco tempo.

Agora só tira uma dúvida minha: se tem as ações específicas na SQLIB como vc citou SQLNTRIM,SQLSTR... por que que o meu funcionou só usando '"+cLogin+"'...? pois exite no meu formulário campos com caracter, numérico...

Att

Vitor Molina

vitormolina@gmail.com

FW 10.12 + xHarbour 1.2.1 (6717) | BCC 5.82 | Workshop V4.5

Link to comment
Share on other sites

É que essas funções da SQLLIB, são usadas pra você não ter que ficar colocando esse monte de aspas.

seu código deu certo pois você formou a string corretamente (após a dica do amigo do fórum)

se você for inserir um registro direto no banco terá que escrever o comando assim:

id=code>
id=code>

como os campos LOGIN e SENHA são caracteres, você tem que colocar os valores envoltos por aspas, como acima.

quando você somou a string no seu programa, você colocou essas aspas na UNHA

as funções da lib faz isso pra você quando o campo é caracter

se você tivesse um campo numérico, daria erro se você fizesse isso:

id=code>
id=code>

pois somar caracter com número dá erro

o certo seria

id=code>
id=code>

ou você também poderia usar a função SQLNTRIM, que faz esse ALLTRIM(STR nela.

bom, espero não ter lhe confundido ^^

Erciley Junior (FWH8.01 + SQLLIB 1.9d + xHB 1.10 + xDev 0.65 + @SAY)

NÃO ABANDONE O POST, QUEREMOS SABER SE SUA DÚVIDA/PROBLEMA TEVE SOLUÇÃO

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...