Tab in relazione ed access

lunedì 16 febbraio 2009 - 18.02

pieroalampi Profilo | Expert

salve ho un problema per il quale mi servirebbe aiuto:

ho un db che si chiama controllo accessimdb con due tabelle Utenti e Barcode le due sono in relazione con i due campi BarCode.BarcodeID Utenti.idUtente adesso devo aggiornare solo la tabella BarCode il campo CodiceaBarre, cosa devo fare un INNER JOIN? ho provato ma mi da errore mi dice che manca un ; da qualche parte.
Mi potreste dare una mano? grazie
vb.net, c#,c,c++,html,flash
------------------------------------------------------
:::: :) ::::
------------------------------------------------------

lbenaglia Profilo | Guru

>ho un db che si chiama controllo accessimdb con due tabelle Utenti
>e Barcode le due sono in relazione con i due campi BarCode.BarcodeID
>Utenti.idUtente adesso devo aggiornare solo la tabella BarCode
>il campo CodiceaBarre, cosa devo fare un INNER JOIN? ho provato
>ma mi da errore mi dice che manca un ; da qualche parte.
>Mi potreste dare una mano?

Ciao Pierfrancesco,

Puoi spiegare meglio la relationship in essere tra le due tabelle?
Quale tabella sta dalla parte 1 e quale dalla parte molti?
Su quale colonna di quale tabella è stato definito in constraint di FOREIGN KEY?
Qual è la PRIMARY KEY delle due tabelle?

Se vuoi puoi zippare ed allegare l'mdb alla tua risposta.

>grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

pieroalampi Profilo | Expert

ok, perdonami se sono stato poco chiaro

la tabella Utenti contiene:

idUtente -----------primary key contatore
Nome,
Cognome,
Email,
Telefono

la tabella BarCode:
IdIndice ----------------chiave in relazione con idUtente contatore
Ingresso campo da aggiornare
Uscita
BarcodeID
CodiceAbarre campo da aggiornare

la relazione esiste fra idUtente della tab Utenti e IdIndice della tabella BarCode

se cerco di aggiornare la tabella Barcode il seguente codice

conDati.Open()
Dim DataCmd As New OleDb.OleDbCommand
Dim strSql As String
strSql = "INSERT INTO BarCode (Ingresso, CodiceAbarre) Values ('" & oraleg.ToString & "','" & strFiltro.ToString & "')"
DataCmd = New OleDb.OleDbCommand(strSql, conDati)
DataCmd.CommandText = StrSql
DataCmd.Connection = conDati
DataCmd.ExecuteNonQuery()
DtgDati.Update()
conDati.Close()

ovviamente ottengo questo errore, perche credo che bisogna passare per la tabella Utenti
Impossibile aggiungere o modificare il record. Nella tabella "Utenti" è necessario un record correlato.
------------------------------------------------------
:::: :) ::::
------------------------------------------------------

lbenaglia Profilo | Guru

>se cerco di aggiornare la tabella Barcode il seguente codice
>
> conDati.Open()
> Dim DataCmd As New OleDb.OleDbCommand
> Dim strSql As String
>strSql = "INSERT INTO BarCode (Ingresso, CodiceAbarre) Values
>('" & oraleg.ToString & "','" & strFiltro.ToString & "')"
> DataCmd = New OleDb.OleDbCommand(strSql, conDati)
> DataCmd.CommandText = StrSql
> DataCmd.Connection = conDati
> DataCmd.ExecuteNonQuery()
> DtgDati.Update()
> conDati.Close()
>
>ovviamente ottengo questo errore, perche credo che bisogna passare
>per la tabella Utenti

Più che altro occorre specificare in modo esplicito un valore per la colonna IdIndice corrispondente ad un utente già presente nella tabella Utenti.
Ora, quale deve essere l'utente associato al barcode che stai inserendo?
Boh, lo puoi sapere solo tu

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

pieroalampi Profilo | Expert

Quindi a questo punto non ho capito se sbaglio il database, quale è l'errore?
------------------------------------------------------
:::: :) ::::
------------------------------------------------------

lbenaglia Profilo | Guru

>Quindi a questo punto non ho capito se sbaglio il database, quale
>è l'errore?
Non c'è nessun errore.
Per come hai modellato il db, in fase di inserimento di un barcode DEVI conoscere l'utente associato.
Se non lo conosci, la modellazione è sbagliata, ma non conoscendo l'analisi non posso aiutarti.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

pieroalampi Profilo | Expert

cerco di capire meglio e poi magari esco con qualche altro post
grazie magari a dopo
------------------------------------------------------
:::: :) ::::
------------------------------------------------------

pieroalampi Profilo | Expert

Ciao scusami ho cambiato un attimo il codice per reperire l’utente dal codice, ma adesso come faccio ad inserire nella seconda tabella il barcode e il campo Ingresso o Uscita?

Spero di non rompere ti posto il codice, scusami ma non sapevo come riallacciare il collegamento con te:

'creo la data per inserirla nella nuova cella

oraleg = Date.Now
'mostro la label nascosta in load
Label2.Show()
'assegno alla label la data
Label2.Text = oraleg
'connessione
Dim conDati As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\applicazioni\datipresenze.mdb")
Dim strFiltroUtenti As String = InputBox("Digitare il codice da cercare", "Criterio di filtro")
Dim daDati As New OleDbDataAdapter("SELECT * FROM Utenti WHERE BarCode ='" & strFiltroUtenti & "'", conDati)
Dim dtsDatiUtente As New DataSet()
'Carico i dataset utente e inserisco in datagridviewUtenti
dttDatiUtenti = dtsDatiUtente.Tables("Utenti")
DtgDatiUtenti.DataSource = dttDatiUtenti
'Carico i dataset utente e inserisco in datagridview BarCode
daDati.Fill(dtsDatiUtente, "Utenti")
dttDatiUtenti = dtsDatiUtente.Tables("Utenti")
'riempio il datagridview
DtgDatiUtenti.DataSource = dttDatiUtenti



Da calcolare che la seconda tabella si chiama BarCode ( se fosse solo una select sarebbe: SELECT BarCode.Ingresso, BarCode.Uscita, BarCode.BarcodeID, BarCode.CodiceAbarre, Utenti.Nome, Utenti.Cognome, Utenti.Email, Utenti.BarCode, Utenti.Telefono FROM (BarCode INNER JOIN ON BarCode.BarcodeID = Utenti.idUtente) ) io adesso vorrei aggionare BarCode.Ingresso oppure BarCode.Uscita e BarCode.CodiceAbarre



Ti sarei grato per un aiuto ulteriore

------------------------------------------------------
:::: :) ::::
------------------------------------------------------

lbenaglia Profilo | Guru

>Ciao scusami ho cambiato un attimo il codice per reperire l’utente
>dal codice, ma adesso come faccio ad inserire nella seconda tabella
>il barcode e il campo Ingresso o Uscita?

Se richiedi all'utente di specificare il codice utente non devi fare altro che modificatre il comando di INSERT in questo modo:

INSERT INTO BarCode (IdIndice, Ingresso, CodiceAbarre) VALUES...

Non ti serve alcuna JOIN...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

pieroalampi Profilo | Expert

ok provo
------------------------------------------------------
:::: :) ::::
------------------------------------------------------
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