Fórum Sistema para Controle de Processos #408836
25/10/2011
0
Wesley Souza
Curtir tópico
+ 0Posts
25/10/2011
Ricardo Rodrigues
/*Tenho três tabelas que relacionam entre si (tbl_Cliente, tbl_Encarregado e tbl_Processo).
O encarregado é um cliente e na tbl_Processo posso ter até 3 clientes para cada processo.
A estrutura do Form_Processos é o seguinte:
Cod_Processo (tbl_Processo),
Portaria (tbl_processo),
Cod_Encarregado (tbl_Encarregado que recebe o Cliente da tbl_Cliente);*/
CREATE TABLE TBL_CLIENTE (
COD_CLIENTE INTEGER NOT NULL,
NOME_CLIENTE VARCHAR(50)
);
ALTER TABLE TBL_CLIENTE ADD CONSTRAINT PK_TBL_CLIENTE PRIMARY KEY (COD_CLIENTE);
CREATE TABLE TBL_ENCARREGADO (
COD_ENCARREGADO INTEGER NOT NULL, -- SEQUENCIAL
COD_CLIENTE INTEGER NOT NULL);
ALTER TABLE TBL_ENCARREGADO ADD CONSTRAINT PK_TBL_ENCARREGADO PRIMARY KEY(COD_SEQUENCIA, COD_CLIENTE);
ALTER TABLE TBL_ENCARREGADO ADD constraint FK_TBL_CLIENTE foreign KEY(COD_CLIENTE);
CREATE TABLE TBL_PROCESSO (
COD_PROCESSO INTEGER NOT NULL,
COD_CLIENTE INTEGER NOT NULL,
COD_PORTARIA integer,
);
ALTER TABLE TBL_PROCESSO ADD CONSTRAINT PK_TBL_PROCESSO PRIMARY KEY(COD_PROCESSO, COD_CLIENTE);
ALTER table TBL_PROCESSO ADD CONSTRAINT FK_TBL_ENCARREGADO foreign KEY (COD_PROCESSO, COD_CLIENTE);
Obs : só não entendi pq vc ta querendo cria uma tabela encarregado relacionada com o cliente, mais blz,
acredito eu que vc poderia cliar um campo char na tabela cliente, para marcar se o cliente é encarregado(sim / não).
Espero ter ajudado, ou seja, dado uma luz, essas horas to mei vesgo j´s, rs
boa noite
Gostei + 0
26/10/2011
Emerson Nascimento
+------------------------+
+---------------------+ | TBL_ENCARREGADO |
| TBL_CLIENTE | +------------------------+
+---------------------+ | ID_TBLENCARREGADO (PK) |-----+
| ID_TBLCLIENTE (PK) |------------| ID_TBLCLIENTE (FK)(UK) | |
| CODIGO | | etc | |
| NOME | +------------------------+ |
| etc | |
+---------------------+ |
|
+------------------------+ |
| TBL_PROC_ENC | |
+------------------------+ |
| ID_TBLPROCENC (PK) | |
| ID_TBLENCARREGADO (UK) |>----+
| ID_TBLPROCESSO (UK) |>----+
+---------------------+ +------------------------+ |
| TBL_PROCESSO | |
+---------------------+ |
| ID_TBLPROCESSO (PK) |-------------------------------------------+
| NUMERO |
| PORTARIA |
| etc |
+---------------------+
Gostei + 0
26/10/2011
Emerson Nascimento
cadê os espaços da mensagem anterior?
Gostei + 0
26/10/2011
Emerson Nascimento
note que coloquei apenas os campos básicos (e aqueles que eu suponho serem necessários).
- tabela de clientes
CREATE TABLE TBL_CLIENTE (
ID_TBLCLIENTE INTEGER NOT NULL,
CODIGO VARCHAR(10),
NOME VARCHAR(50)
);
ALTER TABLE TBL_CLIENTE ADD CONSTRAINT PK_TBL_CLIENTE PRIMARY KEY (ID_TBLCLIENTE);
- tabela de processos
CREATE TABLE TBL_PROCESSO (
ID_TBLPROCESSO INTEGER NOT NULL,
NUMERO VARCHAR(20),
PORTARIA VARCHAR(15)
);
ALTER TABLE TBL_PROCESSO ADD CONSTRAINT PK_TBL_PROCESSO PRIMARY KEY (ID_TBLPROCESSO);
- tabela de encarregados
CREATE TABLE TBL_ENCARREGADO (
ID_TBLENCARREGADO INTEGER NOT NULL,
ID_TBLCLIENTE INTEGER NOT NULL
);
ALTER TABLE TBL_ENCARREGADO ADD CONSTRAINT UNQ1_TBL_ENCARREGADO UNIQUE (ID_TBLCLIENTE);
ALTER TABLE TBL_ENCARREGADO ADD CONSTRAINT PK_TBL_ENCARREGADO PRIMARY KEY (ID_TBLENCARREGADO);
ALTER TABLE TBL_ENCARREGADO ADD CONSTRAINT FK_TBL_ENCARREGADO_1 FOREIGN KEY (ID_TBLCLIENTE) REFERENCES TBL_CLIENTE (ID_TBLCLIENTE);
- tabela de processos x encarrecados
CREATE TABLE TBL_PROC_ENC (
ID_TBLPROCENC INTEGER NOT NULL,
ID_TBLPROCESSO INTEGER NOT NULL
ID_TBLENCARREGADO INTEGER NOT NULL,
);
ALTER TABLE TBL_PROC_ENC ADD CONSTRAINT UNQ1_TBL_PROC_ENC UNIQUE (ID_TBLENCARREGADO, ID_TBLPROCESSO);
ALTER TABLE TBL_PROC_ENC ADD CONSTRAINT PK_TBL_PROC_ENC PRIMARY KEY (ID_TBLPROCENC);
ALTER TABLE TBL_PROC_ENC ADD CONSTRAINT FK_TBL_PROC_ENC_1 FOREIGN KEY (ID_TBLENCARREGADO) REFERENCES TBL_ENCARREGADO (ID_TBLENCARREGADO);
ALTER TABLE TBL_PROC_ENC ADD CONSTRAINT FK_TBL_PROC_ENC_2 FOREIGN KEY (ID_TBLPROCESSO) REFERENCES TBL_PROCESSO (ID_TBLPROCESSO);
Gostei + 0
26/10/2011
Wesley Souza
Utilizando listas e um datagridview eu consigo inserir um nome na tabela Encarregado, mas eu quero é inserir o código do PM (funcionário) na tabela encarregado.
public partial class frmProcesso : Form
{
Variaveis vv = new Variaveis();
private List<Lista> li;
public frmProcesso()
{
InitializeComponent();
li = new List<Lista>();
}
public class Lista
{
private string _Nome;
public string Nome
{
get { return _Nome; }
set { _Nome = value; }
}
public Lista(string no)
{
this.Nome = no;
}
public Lista()
{ }
}
private void button1_Click(object sender, EventArgs e)
{
Lista result = li.Find(delegate(Lista it)
{
return it.Nome == comboBox1.Text;
});
if (result == null)
{
li.Add(new Lista(comboBox1.SelectedText));
dataGridView1.DataSource = ;
bindingSource1.DataSource = li;
dataGridView1.DataSource = bindingSource1;
}
else
{
MessageBox.Show(Nome já inserido! );
}
}
// Comando para inserir no banco
public Boolean InsValoGrid(string Nomme) // insert q pegada os valores da lista
{
string sqlIns = insert into tbl_encarregado (Nome) values (@port);
Conexao.Comunica(true);
FbDataAdapter cmdin = new FbDataAdapter(sqlIns, Conexao.ComunicBD);
cmdin.SelectCommand.Parameters.Clear();
cmdin.SelectCommand.Parameters.AddWithValue(@port, Nomme);
cmdin.SelectCommand.ExecuteNonQuery();
Conexao.Comunica(false);
return false;
}
private void button2_Click(object sender, EventArgs e)//Retira da Lista
{
if (dataGridView1.RowCount <= 1)
{ }
else
{
txtPortaria.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();
dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);
}
}
private void button3_Click(object sender, EventArgs e)//Adicona na Lista
{
Lista result = li.Find(delegate(Lista it)
{
return it.Nome == comboBox1.Text;
});
if (result == null)
{
li.Add(new Lista(comboBox1.Text));
dataGridView1.DataSource = ;
bindingSource1.DataSource = li;
dataGridView1.DataSource = bindingSource1;
//textBox1.Text = string.Empty;
comboBox1.Focus();
}
else
{
MessageBox.Show(Nome já inserido! );
comboBox1.Focus();
}
}
private void frmProcesso_Load(object sender, EventArgs e)
{
//if (comboBox1.SelectedIndex > 0)
{
comboBox1.DataSource = vv.ListarPM().Tables[0];
comboBox1.DisplayMember = Nome;
comboBox1.ValueMember = Cod_Cliente;
//comboBox1.Focus();
}
}
private void button4_Click(object sender, EventArgs e)// cria um laço q pega os valores da lista e joga na tbl
{
foreach (Lista InsValorGrid in li)
{
InsValoGrid(InsValorGrid.Nome);
}
}
Foto da Tabela
http://www.flickr.com/photos/23732513@N04/6283845727/in/photostream
Foto da Tela frmProcessos
http://www.flickr.com/photos/23732513@N04/6283844123/in/photostream
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)