Primo programma in VB.net

giovedì 16 aprile 2009 - 15.12

franksic Profilo | Newbie

Ciao a tutti
Sono un nuovo utente del forum e sono anche un nuovo utente di VB.Net al primo programma.

Sto facendo una form per emettere delle fatture di vendita e ho creato la classica form master-detail.
Nella form che ho creato sono presenti le tabelle FAT_VENDM e FAT_VENDD (DataGridView)

1° problema: A me serve ricavare la percentuale IVA (IVA_PERC dalla tabella IVA) in modo da per potere calcolare la colonna
FVD_IMP_IVA (importo Iva).

2° problema: Voglio dare al cliente la possibilità di effettuare la ricerca per data fattura, numero fattura e per Ragione Sociale del cliente.
Ti spiego Quello che ho fatto.
Nella form ho inserito una toolstrip con due textbox (una per la data e una per il numero fattura) e una combobox (CBCLIENTI)
per la ragione sociale.
Per le query con la data e col numero fattura non ho problemi, funzionano perfettamente.
Con la combobox invece ho qualche problemino.

Con il seguente codice popolo la combobox:

Me.CBClienti.ComboBox.DataSource = ClientiBindingSource
Me.CBClienti.ComboBox.DisplayMember = "CLI_RAGSOC"
Me.CBClienti.ComboBox.ValueMember = "CLI_PK"

Fino a qui mi funziona tutto correttamente, quello che non riesco ad ottenere è il valore di CLI_PK
La query che ho scritto è la seguente:

Private Sub BTNCliente_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNClienti.Click
Dim queryByCliente = From FAT_VENDM In Me.GESTAZIDataSet.FAT_VENDM _
Where FAT_VENDM.FVM_CLI_PK = Me.CBCLIENTI.Text _ ' ??????? QUI NON SO COSA CI VA
Select FAT_VENDM
Me.FAT_VENDMBindingSource.DataSource = queryByCliente.AsDataView
End Sub

Quello che non so valorizzare è la WHERE CONDITION: Where FAT_VENDM.FVM_CLI_PK = ?????????????????????


Allego gli script commentati di alcune tabelle e un DB fatto in Access (nel programma invece uso SQLServer 2008 Express)
sperando di essere più chiaro.


-- TABELLA IVA
CREATE TABLE TABIVA (
IVA_ID VARCHAR(2) NOT NULL, -- Codice IVA
IVA_PERC NUMERIC(5,2) NOT NULL, -- Percentuale IVA
IVA_DESCR VARCHAR(25) NOT NULL, -- Descrizione IVA
PRIMARY KEY (IVA_ID),
UNIQUE (IVA_DESCR)
);

CREATE TABLE CLIENTI (
CLI_PK VARCHAR(10) NOT NULL,
CLI_AZ_ID VARCHAR(4) NOT NULL,
CLI_RAGSOC VARCHAR(50) NOT NULL,
CLI_INDIR VARCHAR(40) NOT NULL,
CLI_CAP VARCHAR(5) NOT NULL,
CLI_CITTA VARCHAR(40) NOT NULL,
CLI_PROV VARCHAR(2) NOT NULL,
CLI_TELEF1 VARCHAR(15) NULL,
CLI_TELEF2 VARCHAR(15) NULL,
CLI_CELL VARCHAR(15) NULL,
CLI_FAX VARCHAR(15) NULL,
CLI_EMAIL VARCHAR(50) NULL,
CLI_PAG_WEB VARCHAR(50) NULL,
CLI_PIVA VARCHAR(12) NULL,
CLI_CODFISC VARCHAR(16) NULL,
CLI_NOTE VARCHAR(255) NULL,
PRIMARY KEY (CLI_PK)
);

-- TABELLA MASTER FATTURE
CREATE TABLE FAT_VENDM (
FVM_PK INTEGER NOT NULL, -- Primary key
FVM_AZ_ID VARCHAR(4) NOT NULL, -- Cod. Azienda Cod. Azienda (FK - fa riferimento alla tabella Aziende)
FVM_ANNO VARCHAR(4) NOT NULL, -- Esercizio in uso
FVM_NUMDOC SMALLINT NOT NULL, -- Numero fattura
FVM_DATADOC DATETIME NOT NULL, -- Data fattura
FVM_CLI_PK VARCHAR(10) NOT NULL, -- Cod. Cliente (FK - fa rifer. a CLI_PK della tabella CLIENTI)
FVM_MPM_ID VARCHAR(3) NULL, -- Cod. Tipo di Pagamento (FK)
FVM_FLAG_TRASP CHAR(1) NULL, -- Cod. Tipo trasporto (FK)
FVM_CT_ID VARCHAR(3) NULL, -- Cod. Causale Trasporto (FK)
FVM_AB_ID VARCHAR(3) NULL, -- Cod. Aspetto beni (FK)
FVM_VET_ID VARCHAR(4) NULL, -- Cod. Vettore (FK - fa riferimento alla tabella VETTORI)
FVM_NOTE VARCHAR(60) NULL, -- Si commenta da se
PRIMARY KEY(FVM_PK),
UNIQUE (FVM_AZ_ID, FVM_ANNO, FVM_NUMDOC)
);
ALTER TABLE FAT_VENDM ADD FOREIGN KEY (FVM_AZ_ID) REFERENCES AZIENDE (AZ_ID);
ALTER TABLE FAT_VENDM ADD FOREIGN KEY (FVM_CLI_PK) REFERENCES CLIENTI (CLI_PK);
ALTER TABLE FAT_VENDM ADD FOREIGN KEY (FVM_AB_ID) REFERENCES ASPETTO_BENI (AB_ID);
ALTER TABLE FAT_VENDM ADD FOREIGN KEY (FVM_CT_ID) REFERENCES CAUSALI_TRASPORTO (CT_ID);
ALTER TABLE FAT_VENDM ADD FOREIGN KEY (FVM_MPM_ID) REFERENCES MOD_PAGM (MPM_ID);
ALTER TABLE FAT_VENDM ADD FOREIGN KEY (FVM_VET_ID) REFERENCES VETTORI (VET_ID);


-- TABELLA DETAIL FATTURE
CREATE TABLE FAT_VENDD (
FVD_PK INTEGER NOT NULL, -- Primary Key
FVD_FVM_PK INTEGER NOT NULL, -- FK - Chiave di relaz. con la tabella FAT_VENDM
FVD_TIPORIGA CHAR(1) NOT NULL, -- Tipo Riga - A=Articolo - R=Riferimento DDT - D=Riga descrittiva
FVD_CAT_ID VARCHAR(6) NULL, -- Cod. Categ. Articolo (FK - Fa riferim. alla tabella Categorie Articoli)
FVD_ART_PK VARCHAR(20) NULL, -- Cod. Articolo (FK - Fa rigferimento alla tabella ARTICOLI)
FVD_DESCR VARCHAR(100) NOT NULL, -- Riga di Descrizione in caso Tipo Riga = D
FVD_UM_ID VARCHAR(2) NULL, -- Cod. Unità di Misura (FK)
FVD_QTA SMALLINT NULL, -- Quantita
FVD_PRZ NUMERIC(10,2) NULL, -- Prezzo di listino
FVD_SCONTO NUMERIC(10,2) NULL, -- Percentuale sconto
FVD_PRZ_NETTO NUMERIC(10,2) NULL, -- Prezzo scontato
FVD_IVA_ID VARCHAR(2) NULL, -- Cod. IVA (FK - Fa riferim a IVA_ID della tabella TABIVA)
FVD_IMP_IMPON NUMERIC(10,2) NULL, -- Imponibile
FVD_IMP_IVA NUMERIC(10,2) NULL, -- Importo IVA
FVD_IMP_TOT NUMERIC(10,2) NULL, -- Totale riga
PRIMARY KEY(FVD_PK)
);
ALTER TABLE FAT_VENDD ADD FOREIGN KEY (FVD_FVM_PK) REFERENCES FAT_VENDM(FVM_PK);
ALTER TABLE FAT_VENDD ADD FOREIGN KEY (FVD_CAT_ID) REFERENCES CATEGORIE(CAT_ID);
ALTER TABLE FAT_VENDD ADD FOREIGN KEY (FVD_ART_PK) REFERENCES ARTICOLI(ART_PK);
ALTER TABLE FAT_VENDD ADD FOREIGN KEY (FVD_UM_ID) REFERENCES UNITA_MISURA (UM_ID);
ALTER TABLE FAT_VENDD ADD FOREIGN KEY (FVD_IVA_ID) REFERENCES TABIVA (IVA_ID);


Ciao e grazie per la disponibilità

Francesco

Jok83 Profilo | Junior Member

Ciao visto che popoli la combo così:

Me.CBClienti.ComboBox.DataSource = ClientiBindingSource
Me.CBClienti.ComboBox.DisplayMember = "CLI_RAGSOC"
Me.CBClienti.ComboBox.ValueMember = "CLI_PK"

prova nelle where al posto del :
Where FAT_VENDM.FVM_CLI_PK = Me.CBCLIENTI.Text a metter where FAT_VENDM.FVM_CLI_PK =cbclienti.selectedvalue

perchè come valore della combo metti "CLI_PK" che penso vada confrontato con FVM_CLI_PK mentre il text dovrebbe darti solo i valori dei campi che metti a mono o al max ti darà la ragione sociale che è il display member..


franksic Profilo | Newbie

Ho provato, ma l'intellisense non mi da selectedvalue nelle opzioni.

Ciao

fausto1965 Profilo | Newbie

Scusate l'intromissione.....
Se CBCLIENTE è una ComboBox e vuoi vedere il "SelectedValue" dell'Intell... devi scrivere Me.CBCLiente.SelectedValue = ????
Ci deve essere per forza...
Buon Lavoro!

franksic Profilo | Newbie

Ho risolto in questa maniera:

Where FAT_VENDM.FVM_CLI_PK = Me.CBCLIENTI.ComboBox.SelectedValue

Grazie ragazzi mi avete dato lo spunto giusto.

Non è che sapete come aiutarmi anche con l'altro problema che ho e cioè:
A me serve ricavare la percentuale IVA (IVA_PERC dalla tabella IVA) in modo da per potere calcolare la colonna
FVD_IMP_IVA (importo Iva) - vedi il primo messaggio per ulteriori informazioni.

Ciao

Jok83 Profilo | Junior Member

Non ho ben capito, vorresti fare una select su questa tabella
CREATE TABLE FAT_VENDD (
FVD_PK INTEGER NOT NULL, -- Primary Key
FVD_FVM_PK INTEGER NOT NULL, -- FK - Chiave di relaz. con la tabella FAT_VENDM
FVD_TIPORIGA CHAR(1) NOT NULL, -- Tipo Riga - A=Articolo - R=Riferimento DDT - D=Riga descrittiva
FVD_CAT_ID VARCHAR(6) NULL, -- Cod. Categ. Articolo (FK - Fa riferim. alla tabella Categorie Articoli)
FVD_ART_PK VARCHAR(20) NULL, -- Cod. Articolo (FK - Fa rigferimento alla tabella ARTICOLI)
FVD_DESCR VARCHAR(100) NOT NULL, -- Riga di Descrizione in caso Tipo Riga = D
FVD_UM_ID VARCHAR(2) NULL, -- Cod. Unità di Misura (FK)
FVD_QTA SMALLINT NULL, -- Quantita
FVD_PRZ NUMERIC(10,2) NULL, -- Prezzo di listino
FVD_SCONTO NUMERIC(10,2) NULL, -- Percentuale sconto
FVD_PRZ_NETTO NUMERIC(10,2) NULL, -- Prezzo scontato
FVD_IVA_ID VARCHAR(2) NULL, -- Cod. IVA (FK - Fa riferim a IVA_ID della tabella TABIVA)
FVD_IMP_IMPON NUMERIC(10,2) NULL, -- Imponibile
FVD_IMP_IVA NUMERIC(10,2) NULL, -- Importo IVA
FVD_IMP_TOT NUMERIC(10,2) NULL, -- Totale riga
PRIMARY KEY(FVD_PK)


e al posto di questo FVD_IVA_ID VARCHAR(2) NULL, -- Cod. IVA (FK - Fa riferim a IVA_ID della tabella TABIVA) vorresti il valore dell IVA che c'è nella Tabella TAB IVA giusto?

Select FVD_PK,FVD_FVM_PK,FVD_TIPORIGA,FVD_CAT_ID,FVD_ART_PK,FVD_DESCR,FVD_UM_ID,FVD_QTA,FVD_PRZ ,FVD_SCONTO,FVD_PRZ_NETTO,IVA_PERC FROM FAT_VENDD INNER JOIN TABIVA ON FVD_IVA_ID=IVA_ID where FDV_PK= numero della chiave della fattura che interessa vedere

non credo però che sia quello che vuoi.. non riesco a capire dove devi metterla..

franksic Profilo | Newbie

Quello che dovrei fare con una select SQL standard è:

Select TABIVA.IVA_PERC
into variabile_perc_iva
from TABIVA
where TABIVA.IVA_ID = FAT_VENDD.FVD_IVA_ID;

Però non so come scriverlo in vb.net o in LINQ.

Dopo debbo calcolarmi il valore di FVD_IMP_IVA che è uguale a FVD_IMP_IMPON / 100 * variabile_perc_iva,
ma questo so come farlo.

Spero di essere stato più chiaro.

ciao Jok83 e grazie

Jok83 Profilo | Junior Member

ok io per eseguire dei comandi Sql e prendere i risultati faccio così

imports system.data

poi nella sub o dove serve

Dim con As String = "Data Source=IP o LOCAL HOST DIPENDE\ISTANZASQL;Network Library=DBMSSOCN;Initial Catalog=NomeDB;User ID=USER;Password=PSW;" ' praticamnte scrivi la stringa di connessione puoi farti una variabile globale
Dim cn As New SqlClient.SqlConnection(con) ' creo una connessione a quel db
Dim sel As String = "Select TABIVA.IVA_PERC from TABIVA INNER JOIN FAT_VENDD ON TABIVA.IVA_ID = FAT_VENDD.FVD_IVA_ID;"
Dim cmd As New SqlClient.SqlCommand(sel, cn) ' creo un comando sql su quella connessione con la mia query update insert quel che è
Dim da As New SqlClient.SqlDataAdapter ' creo un data adpater
da.SelectCommand = cmd ' gli assegno il comando
Dim ds As New DataSet
da.Fill(ds, "Risultato") ' e metto il risultato su un dataset nella tabella risultato

a questo punto tutte le righe che risultano dalla select sono nel dataset se è una sola riga e voglio assegnarla auna textbox

txtrisultato.text=ds.tables("Risultato").Row(0).item(0).tostring 'puoi prima controllare che esistana almeno un risultato e che non sia nullo con if ecc
se sono più di una riga
dim rw as datarow
for each rw in ds.tables("Risultato").rows
msgbox(rw.item(0).tostring) ' dove 0 è l'indice della colonna che vuoi vedere
' o lo assegni alle text che hai o dimmi dove
next

io faccio così nei casi in cui devo recuperare dati però non ti assicuro sia il modo migliore sono agli inizi anch'io
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5