Visualizzazione dei risultati da 1 a 8 su 8

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    [c#]Funzione creare un codice da database

    Buon giorno a tutti sto tentando di creare un codice per la mia form,volevo far si che questa funzione leggesse il codice più alto inserito per poi inserire 1 numero in più(es 120+1) e poi farlo comparire in una textbox in modo che poi con il pulsante salva(oltre a salvare gli altri campi) lo andavo a salvare nel database.Pensavo di fare cosi per la realizzazione di questo codice in modo che sia un codice univoco cosi potrò realizzare le altre operazioni legato ad esso(cancellazione,ricerche,modifiche ecc ecc).Cosa ne pensate?Sto tentando di cominciare a fare cosi ma ho intoppato subito in un errore.


    codice:
     private void codice()        {
                comando = new SqlCommand();
                conn = new SqlConnection(constr);
                
    
    
                conn.Open();
    
    
                SqlParameter idbusta = new SqlParameter ("@id",SqlDbType.Int);
                comando.Parameters.Add(idbusta);
                idbusta.Direction = ParameterDirection.Output;
                idBustaTB.Text = idbusta.Value.ToString();
    
    
                
    
    
                comando.CommandText = "Select max (@id = idBusta) from bustaRiparazione";
    
    
                comando.ExecuteNonQuery();
                conn.Close();

    errore:

    codice:
    {"Riferimento a un oggetto non impostato su un'istanza di oggetto."}

    Questo è il database

    codice:
    CREATE TABLE [dbo].[bustaRiparazione] (    [IdBusta]            INT           IDENTITY (1, 1) NOT NULL,
        [codiceBustaCliente] NVARCHAR (10) NULL,
        [cliente]            NCHAR (30)    NULL,
        [dataInserimento]    DATE          NULL,
        [dataConsegna]       DATE          NULL,
        [descrizioneOggetti] NVARCHAR (80) NULL,
        [lavoriDaEseguire]   NVARCHAR (80) NULL,
        [prezzoC]            REAL          NULL,
        [prezzoP]            REAL          NULL,
        [prezzoPreventivo]   REAL          NULL,
        [note]               NVARCHAR (50) NULL,
        PRIMARY KEY CLUSTERED ([IdBusta] ASC)
    );

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non ha molto senso che tu visualizzi il campo IDENTITY perché quello è un riferimento interno del db per ogni record.

    Leggi questo per capire come trattare l'identity

    http://www.mikesdotnetting.com/Artic...y-added-record

    e anche altre risorse su internet ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Sapreste farmi un esempio sto facendo un po di confusione non riesco a capire,si può interrogare il database con Link,Ado.net,Entity Framework.

    1)Cosa mi conviene usare? (Sto leggendo c# Guida completa per lo sviluppatore)
    2)Ditemi se sbaglio,Linq va bene per interrogazioni piccole,vedi la parte della mia applicazione(dove prendo i vari valori dalla form e faccio l'INSERT nel database con una query con le keyword @) qui ho dovuto usare ODO.net.

    MI fate un'esempio? magari come appunto trovare il valore massimo di un campo in un database

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Ho fatto bene il debug e ho visto che quando chiama per la seconda volta il metodo la variabile ha sempre il valore vecchio invece nel frattempo si dovrebbe essere memorizzata sul databse perciò leggendola come nuova dovrebbe essere incrementata di uno.Puo essere perchè per l'inserimento ho usato "SqlConnection"mentre per il metodo del codice ho usato la classe "DataClasses1DataContext" per la connessione?

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Ci sono Riuscitooooooo


    codice:
     DataClasses1DataContext db = new DataClasses1DataContext();            var maxvalue = (from b in db.bustaRiparazione select b.IdBusta).Max()+1;
                Console.Write("Questo è il codice "+maxvalue);
                codiceBustaTB.Text = Convert.ToString(maxvalue);
    Postate pure critiche costruttive

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Ora ho un'altro problema volevo far si che quando salvo mi puliva tutti i campi (ma quello del codice creato con il metodo "codice" non lo pulisce e non genera neanche il codice nuovo(ho commentato dove sono le chiamate ai metodi)


    codice:
    using System;using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlClient;
    using System.Data.OleDb;
    
    
    
    
    namespace Orologeria
    {
        public partial class InsBusta : Form
        {
    
    
        
            SqlCommand comando;
            SqlConnection conn;
    
    
            string constr =  @"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Paolo_2\Dropbox\Programmazione\c#\Work\Orologeria\Orologeria\DataOrologeria.mdf;Integrated Security=True";
    
    
            public InsBusta()
            {
                InitializeComponent();
                this.codice();
            }
    
    
            
            private void salvaButton_Click(object sender, EventArgs e)
            {
               
    
    
                conn = new SqlConnection(constr);
                comando = new SqlCommand();
                conn.Open();
    
    
    
    
               
                comando.Parameters.Add("@CB",SqlDbType.NVarChar).Value = codiceBustaTB.Text;
                comando.Parameters.Add("@CL", SqlDbType.NVarChar).Value = clienteCB.Text;
                comando.Parameters.Add("@DI", SqlDbType.Date).Value = dataAccDTP.Value;
                comando.Parameters.Add("@DC", SqlDbType.Date).Value = dataConsegnaDTP.Value;
                comando.Parameters.Add("@DO", SqlDbType.NVarChar).Value = descOggettiTB.Text ;
                comando.Parameters.Add("@LV", SqlDbType.NVarChar).Value = lavoriTB.Text;
                comando.Parameters.Add("@PC", SqlDbType.Float).Value = string.IsNullOrWhiteSpace(prezzoCTB.Text);
                comando.Parameters.Add("@PP", SqlDbType.Float).Value = string.IsNullOrWhiteSpace(prezzoPTB.Text);
                comando.Parameters.Add("@PPr", SqlDbType.Float).Value = string.IsNullOrWhiteSpace(prezzoPrecTB.Text);
                comando.Parameters.Add("@N", SqlDbType.NVarChar).Value = noteTB.Text;
               
    
    
                comando.Connection = conn;
    
    
    
    
                //sql Statement
    
    
    
    
                comando.CommandText = "Insert into bustaRiparazione (codiceBustaCliente,cliente,dataInserimento,dataConsegna,"+
                                      "descrizioneOggetti,lavoriDaEseguire,prezzoC,prezzoP,prezzoPreventivo,"+
                                      "note) values (@CB,@CL,@DI,@DC,@DO,@LV,@PC,@PP,@PPr,@N)";
    
    
    
    
                try
                {
                    comando.ExecuteNonQuery();
                    MessageBox.Show("Salvato");
    
    
    
    
                    idBustaTB.Clear();///////////////////////Non mi pulisce/////////////////
                   
                    this.codice();//////////////////////////Non mim crea il nuovo Codice////////
               
                }
                catch(Exception err)
                    {
                    MessageBox.Show("Non Salvato"+err);
                    }
    
    
                finally
                {
                    conn.Close();
                    
                
                }
    
    
    
    
    
    
            }
    
    
            private void InsBusta_Load(object sender, EventArgs e)
            {
                // TODO: questa riga di codice carica i dati nella tabella 'dataSet11._clienti__'. È possibile spostarla o rimuoverla se necessario.
                this.clienti__TableAdapter.Fill(this.dataSet11._clienti__);
                // TODO: questa riga di codice carica i dati nella tabella 'dataSet1._clienti__'. È possibile spostarla o rimuoverla se necessario.
                this.clienti__TableAdapter.Fill(this.dataSet1._clienti__);
             
                
                
              
              
              
            }
    
    
            private void esciButton_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    
    
            //Metodo Per Genare il codice Busta in automatico all'apertura del form
            private void codice()
            {
    
    
              DataClasses1DataContext db = new DataClasses1DataContext();
                var maxvalue = (from b in db.bustaRiparazione select b.IdBusta).Max()+1;
                idBustaTB.Text = Convert.ToString(maxvalue);
                
                               
                           
                               
    
    
                
               
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
                }
            }
        }

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158
    Se vi puo aiutare,salvando piu volte la textbox rimane ferma sul primo codice invece sul database si incrementa correttamente.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Potresti dopo la query di insert usare questo codice:

    codice:
     string query = "SELECT CONVERT(int, SCOPE_IDENTITY())"; 
     int newId = (int)comando.ExecuteScalar() + 1;
    che ti ritorna l'ultimo identity inserito nel DB. Poi aggiorni il valore della textbox con il nuovo identity e non chiami piu this.codice().

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.