Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    33

    [c#] QuerySql psicolabile?

    Salve a tutti! Sto scrivendo un'applicazione x la gestione di un database mdb.
    Ora putroppo mi sono fermato ad una funzione che dovrebbe aggiornare dinamicamente alcuni valori di una tabella (Materiale) prendendo i dati da un'altra tabella e moltiplicarli per un certo numero.

    la query che avevo pensato di scrivere era questa:

    "UPDATE Materiale, Prodotto25 SET Materiale.Qtà = (SELECT Materiale.Qtà+(Prodotto25.Qtà*3) AS Ris FROM Prodotto25, Materiale) WHERE Materiale.Codice = Prodotto25.Componente";

    Codice e componente sono le chiavi primarie delle 2 tabelle.

    Ora, se eseguo questa query mi ritrovo con un errore che dice: "per l'operazione è necessaria una query aggiornabile". Questo di solito succede quando non sono settati i permessi, giusto? Ok, se è così vorrei capire quale utente dovrei abilitare all'uso del database. Se era un'applicazione asp usavo IUSR ora invece?
    Poi ho notato che se eseguo una query più semplice tipo
    "UPDATE Materiale SET Qtà = 10" mi funziona perfettamente...

    Cos'è che sbaglio?

    Ah, il programma gira su framework 2.0 (o almeno dovrebbe! )

    Grazie in anticipo!!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,477
    Eventualmente, prova a riportare anche il codice che hai steso per eseguire la query.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    33
    Questo è il codice della funzione...
    codice:
            
    void aggiorna(int numero)
            {
                string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\db\\magazzino.mdb';User ID = Admin";
                System.Data.OleDb.OleDbConnection wConn = new System.Data.OleDb.OleDbConnection(connstr);
                System.Data.OleDb.OleDbCommand cmd;
                string query = "UPDATE Materiale, Prodotto25 SET Materiale.Qtà = "+
    "(SELECT Materiale.Qtà+(Prodotto25.Qtà*"+numero+") AS Ris FROM Prodotto25, Materiale)"+
    " WHERE Materiale.Codice = Prodotto25.Componente";
                cmd = new System.Data.OleDb.OleDbCommand(query, wConn);
                wConn.Open();
                cmd.ExecuteNonQuery();
                wConn.Close();
    
            }
    Help!

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    33
    ho risolto! Ho modificato la query in questo modo:

    UPDATE Materiale, Prodotto25 SET Materiale.Qtà = Materiale.Qtà-(Prodotto25.Qtà*" + numero + ") WHERE Materiale.Codice = Prodotto25.Componente

    Ora tutto sembra funzionare a dovere..

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.