Jump to content
Fórum Script Brasil
  • 0

Inserir linhas de datagridview em Mysql


Question

Oi gente, sou nova aqui e programando também. 

Tenho uma dúvida envolvendo MySql e C#:

Estou tentando salvar os itens (produtos) de um orçamento no banco de dados. Pelo que pesquisei, tenho que criar duas tabelas, uma pai e outra filha. As minhas  são Orcamento e Item_Orcamento. Na Orcamento tenho a chave do Item_Orcamento (id_item_orcamento) e na Item_Orcamento tenho a chave do Orcamento (id_orcamento). 

Minha dúvida é referente a como ler todas as linhas do datagridview(os produtos/valores do orçamento) e salvar no banco de dados(todos em um só registro). 

Alguém me ajuda please? Sempre acho as informações por partes e estou ficando cada vez mais confusa.

Obrigada!!

Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Salvar em um só registro?

Se você modelou corretamente a tabela de orcamento receberá os dados gerais e a de item_orcamento receberá um registro para cada item daquele orçamento.

A gravação pode ocorrer de uma única vez, através de uma storage procedure com controle de sucesso ou fracasso de gravação.

Passe o modelo de dados para o forum de MySQL e veremos o que pode ser feito.

Depois, você poderá retornar a este forum para saber como integrar a linguagem de programação com o banco.

Link to post
Share on other sites
  • 0
1 hora atrás, Denis Courcy disse:

Salvar em um só registro?

Se você modelou corretamente a tabela de orcamento receberá os dados gerais e a de item_orcamento receberá um registro para cada item daquele orçamento.

A gravação pode ocorrer de uma única vez, através de uma storage procedure com controle de sucesso ou fracasso de gravação.

Passe o modelo de dados para o forum de MySQL e veremos o que pode ser feito.

Depois, você poderá retornar a este forum para saber como integrar a linguagem de programação com o banco.

Mas aí no caso o campo id_item_orcamento (da tabela Item_Orcamento) teria vários valores no mesmo campo na tabela Orcamento? Tem como isso? Vou postar o código mais tarde, mas basicamente são dois inserts, primeiro na tabela pai, depois na filho, e o último campo pega o id da primeira.

Link to post
Share on other sites
  • 0

O código do meu banco:

CREATE TABLE Orcamento (
  id_orcamento INTEGER NOT NULL AUTO_INCREMENT,
  tipo_orcamento CHAR(20) NOT NULL,
  id_cliente INTEGER NOT NULL,
  id_veiculo INTEGER NOT NULL,
  id_item_orc INTEGER NOT NULL,
  data_abertura  CHAR(10) NULL, 
  valor_total CHAR(10) NOT NULL, 
  status  CHAR(11) NOT NULL,
  obs  CHAR(40) NOT NULL,
  PRIMARY KEY(id_orcamento)
);

ALTER TABLE 'Orcamento' ADD CONSTRAINT 'fk_id_cliente' FOREIGN KEY ( 'id_cliente' ) REFERENCES 'Cad_cliente' ( 'id_cliente' ) ;
ALTER TABLE 'Orcamento' ADD CONSTRAINT 'fk_id_veiculo' FOREIGN KEY ( 'id_veiculo' ) REFERENCES 'Cad_Veiculo' ( 'id_veiculo' ) ;
ALTER TABLE 'Orcamento' ADD CONSTRAINT 'fk_id_item_orc' FOREIGN KEY ( 'id_item_orc' ) REFERENCES 'Item_Orcamento' ( 'id_item_orc' ) ;

 

CREATE TABLE Item_Orcamento (
  id_item_orc INTEGER NOT NULL AUTO_INCREMENT,
  id_servico INTEGER NULL,
  valor_servico CHAR(10) NULL, 
  quantidade_serv INTEGER NULL, 
  id_produto INTEGER NULL,
  valor_produto  CHAR(10) NULL,
  quantidade_prod INTEGER NULL,
  valor_total CHAR(10) NULL,
  id_orcamento INTEGER NULL,
  PRIMARY KEY(id_item_orc)
);
ALTER TABLE 'Item_Orcamento' ADD CONSTRAINT 'fk_id_servico' FOREIGN KEY ( 'id_servico' ) REFERENCES 'Cad_Servico' ( 'id_servico' ) ;
ALTER TABLE 'Item_Orcamento' ADD CONSTRAINT 'fk_id_produto' FOREIGN KEY ( 'id_produto' ) REFERENCES 'Cad_Produto' ( 'id_produto' ) ;
ALTER TABLE 'Item_Orcamento' ADD CONSTRAINT 'fk_id_orcamento' FOREIGN KEY ( 'id_orcamento' ) REFERENCES 'Orcamento' ( 'id_orcamento' ) ;

O insert:

SET AUTOCOMMIT=0;
START TRANSACTION;
INSERT INTO Orcamento(id_orcamento, tipo_orcamento, id_cliente, id_veiculo,
id_item_orc, data_abertura, valor_total, status, obs)
VALUES(,,,);
INSERT INTO Item_Orcamento(id_item_orc, id_servico, valor_servico,
quantidade_serv, id_produto, valor_produto, quantidade_prod, valor_total)
values(,,, (select LAST_INSERT_ID()));
COMMIT;
SET AUTOCOMMIT=1;

 

Os valores de ambos vou pegar das textbox das telas.

Link to post
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
Answer this question...

×   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.

Cloud Computing


  • Forum Statistics

    • Total Topics
      149405
    • Total Posts
      645894
×
×
  • Create New...