Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [vb.net] Aiuto Query

    Ho un problemino : Non so fare una query
    Date due tabelle acquisti(campi acquisti: descrizione,dataAcquisto,quantita,id) e vendite (descrizione,quantita,dataVendita,id) stabilisco da programma che un oggetto è acquistato una sola volta(con una quantita) e venduto piu' volte con quantita divere,come dire che compro 10 penne e ne vendo prima 2 e poi 3 e poi......
    Dovrei selezionare per ogni oggetto la descrizione,id,giacenza(quantita acquistata - summ(quantitavendute) ) .
    Come posso fare?

  2. #2
    dimenticavo che id è chiave in acquisti ma non in vendite

  3. #3

    ho trovato una soluzione artigianale ma funziona

    Try
    objConn.Open()
    strsql = "select dpersone.oggetti,dpersone.prezzo,dpersone.prezzosc ontato,dpersone.cliente,dpersone.prezzovendita,dpe rsone.data,dpersone.stato,dpersone.datas,quantita, (quantita-(select sum(quantita) from venditepersone where venditepersone.nsriferimento=" & rif.Text & " ))as [giacenzaa] from dpersone where dpersone.nsriferimento=" & rif.Text & " "

    Dim objCommand As New OleDbCommand(strsql, objConn)
    areader = objCommand.ExecuteReader()
    While (areader.Read())
    descrizione.Text = ((areader.GetString(0)))
    costo.Text = ((areader.GetValue(1)))
    sconto.Text = ((areader.GetValue(2)))
    fornitore.Text = ((areader.GetString(3)))
    importo.Text = ((areader.GetValue(4)))
    dataa.Text = ((areader.GetDateTime(5)))
    stornato.Text = ((areader.GetString(6)))
    Try
    datas.Text = ((areader.GetDateTime(7)))
    Catch
    datas.Text = ""
    End Try
    Try
    qq.Text = ((areader.GetInt32(8)))
    Catch
    qq.Text = ""
    End Try
    Try
    giac.Text = (areader.GetDouble(10))
    Catch
    areader.Close()
    strsql = "select quantita from dpersone where dpersone.nsriferimento=" & rif.Text & " "
    objCommand = New OleDbCommand(strsql, objConn)
    areader = objCommand.ExecuteReader()
    While (areader.Read())
    giac.Text = ((areader.GetInt32(0)))
    End While
    End Try


    End While
    areader.Close()
    objConn.Close()

    'importo.Select()
    Catch ex As Exception
    objConn.Close()
    End Try



    il primo try serve nel caso in cui un oggetto sia caricato ma mai scaricato(acquistato e mai venduto)

  4. #4
    Ho semplificato le tabelle.

    Acquisti: ID (int), Descr (varchar), QtaAcq (long)
    Vendite: ID(int), QtaVend (long).

    Prova questa Query

    codice:
    declare @p1 as int;
    Set @p1 = (l'ID del componente);
    
    select acquisti.ID, acquisti.Descr, (acquisti.QtaAcq- SUM(qtaVend)) as Giacenza
    from acquisti, vendite
    where acquisti.ID = Vendite.ID and
    acquisti.ID = @p1
    group by acquisti.ID, acquisti.QtaAcq, Acquisti.Descr
    A livello di codice puoi crearti il parametro (OleDBParameter) ed assegnarlo prima di fare la query, oppure costruirti la query ogni volta.

    codice:
    OleDbParameter p1 = new OleDbParameter("@p1", OleDbType.Integer)
    objCommand.Parameters.Add(p1)
    Prima della query
    p1.Value = (il tuo id) 
    areader = objCommand.ExecuteReader()

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.