Mysql StringGrid
Olá Turma,
Delphi 7 + ZeosLib + Mysql 4.1 - Possuo um StringGrid e estou inserindo nele vários dados (produtos com qtd, desconto e vlr) através de edits. Como faço pra inserir depois todo esse conteúdo do stringgrid para o banco? Estou usando o insert da seguinte maneira, mas não está funcionando:
DM.zqItem.SQL.Text := ´Insert Into movitens (nolocacao, cdproduto, qtproduto, vldesc, flcortesia, vltotal) Values (:znolocacao, :zcdproduto, :zqtproduto, :zvldesc, :zflcortesia, :zvltotal)´;
DM.zqItem.ParamByName(´znolocacao´).AsInteger := StrToInt(edcdlocacao.Text);
For I:= 1 to sgProduto.Rowcount do
DM.zqItem.ParamByName(´zcdproduto´).AsInteger := StrtoInt(sgProduto.Cells[0,I]);
DM.zqItem.ParamByName(´zqtproduto´).AsInteger := StrToInt(sgProduto.Cells[2,I]);
DM.zqItem.ParamByName(´zvldesc´).AsFloat := StrToFloat(sgProduto.Cells[4,I]);
DM.zqItem.ParamByName(´zflcortesia´).AsString := sgProduto.Cells[5,I];
DM.zqItem.ParamByName(´zvltotal´).AsFloat := StrToFloat(sgProduto.Cells[6,I]);
DM.zqItem.ExecSQL;
Alguém pode me dar uma ajuda??? Será que é melhor trabalhar com o DBgrid??? Se for, alguém pode me ajudar com algum exemplo?
Delphi 7 + ZeosLib + Mysql 4.1 - Possuo um StringGrid e estou inserindo nele vários dados (produtos com qtd, desconto e vlr) através de edits. Como faço pra inserir depois todo esse conteúdo do stringgrid para o banco? Estou usando o insert da seguinte maneira, mas não está funcionando:
DM.zqItem.SQL.Text := ´Insert Into movitens (nolocacao, cdproduto, qtproduto, vldesc, flcortesia, vltotal) Values (:znolocacao, :zcdproduto, :zqtproduto, :zvldesc, :zflcortesia, :zvltotal)´;
DM.zqItem.ParamByName(´znolocacao´).AsInteger := StrToInt(edcdlocacao.Text);
For I:= 1 to sgProduto.Rowcount do
DM.zqItem.ParamByName(´zcdproduto´).AsInteger := StrtoInt(sgProduto.Cells[0,I]);
DM.zqItem.ParamByName(´zqtproduto´).AsInteger := StrToInt(sgProduto.Cells[2,I]);
DM.zqItem.ParamByName(´zvldesc´).AsFloat := StrToFloat(sgProduto.Cells[4,I]);
DM.zqItem.ParamByName(´zflcortesia´).AsString := sgProduto.Cells[5,I];
DM.zqItem.ParamByName(´zvltotal´).AsFloat := StrToFloat(sgProduto.Cells[6,I]);
DM.zqItem.ExecSQL;
Alguém pode me dar uma ajuda??? Será que é melhor trabalhar com o DBgrid??? Se for, alguém pode me ajudar com algum exemplo?
Monteirog12
Curtidas 0
Respostas
Marcio.theis
08/01/2006
Não entendi muito bem o seu problema, mas tente assim:
For I:= 1 to sgProduto.Rowcount do begin DM.zqItem.Close; DM.zqItem.SQL.Clar; DM.zqItem.SQL.Add(´Insert Into movitens (nolocacao, cdproduto, qtproduto, vldesc, flcortesia, vltotal)´); DM.zqItem.SQL.Add(´Values (:znolocacao, :zcdproduto, :zqtproduto, :zvldesc, :zflcortesia, :zvltotal)´); DM.zqItem.ParamByName(´znolocacao´).AsInteger := StrToInt(edcdlocacao.Text); DM.zqItem.ParamByName(´zcdproduto´).AsInteger := StrtoInt(sgProduto.Cells[0,I]); DM.zqItem.ParamByName(´zqtproduto´).AsInteger := StrToInt(sgProduto.Cells[2,I]); DM.zqItem.ParamByName(´zvldesc´).AsFloat := StrToFloat(sgProduto.Cells[4,I]); DM.zqItem.ParamByName(´zflcortesia´).AsString := sgProduto.Cells[5,I]; DM.zqItem.ParamByName(´zvltotal´).AsFloat := StrToFloat(sgProduto.Cells[6,I]); DM.zqItem.ExecSQL; end;
GOSTEI 0
Monteirog12
08/01/2006
/]/]@t
Brigadão pela ajuda - Foi a Falta do Begin e o End, Tá gravando direitinho. Agora tô com o seguinte problema, meu stringgrid tem várias linhas porque quando peço para inserir, se já não houver uma linha disponível ele não insere só insere da segunda vez em que eu clicar no inserir. Por isso, quando a rotina grava os dados do stringgrid, ela pega também as linhas em branco, ai dá ( ´´ não é um valor inteiro válido), vc tem alguma idéia de como resolver isso?? Te agradeço desde já!!!
Brigadão pela ajuda - Foi a Falta do Begin e o End, Tá gravando direitinho. Agora tô com o seguinte problema, meu stringgrid tem várias linhas porque quando peço para inserir, se já não houver uma linha disponível ele não insere só insere da segunda vez em que eu clicar no inserir. Por isso, quando a rotina grava os dados do stringgrid, ela pega também as linhas em branco, ai dá ( ´´ não é um valor inteiro válido), vc tem alguma idéia de como resolver isso?? Te agradeço desde já!!!
GOSTEI 0
Marcio.theis
08/01/2006
Coloque um validação antes de efetuar a inserção do registro, como por exemplo:
For I:= 1 to sgProduto.Rowcount do begin if sgProduto.Cells[0,I] <> ´´ then begin DM.zqItem.Close; DM.zqItem.SQL.Clar; DM.zqItem.SQL.Add(´Insert Into movitens (nolocacao, cdproduto, qtproduto, vldesc, flcortesia, vltotal)´); DM.zqItem.SQL.Add(´Values (:znolocacao, :zcdproduto, :zqtproduto, :zvldesc, :zflcortesia, :zvltotal)´); DM.zqItem.ParamByName(´znolocacao´).AsInteger := StrToInt(edcdlocacao.Text); DM.zqItem.ParamByName(´zcdproduto´).AsInteger := StrtoInt(sgProduto.Cells[0,I]); DM.zqItem.ParamByName(´zqtproduto´).AsInteger := StrToInt(sgProduto.Cells[2,I]); DM.zqItem.ParamByName(´zvldesc´).AsFloat := StrToFloat(sgProduto.Cells[4,I]); DM.zqItem.ParamByName(´zflcortesia´).AsString := sgProduto.Cells[5,I]; DM.zqItem.ParamByName(´zvltotal´).AsFloat := StrToFloat(sgProduto.Cells[6,I]); DM.zqItem.ExecSQL; end; end;
GOSTEI 0