n° 185
Maggio/Giugno 2013
Maggio 26, 2013, 08:19:57 am *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
  Indice Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  

* Messaggi recenti
Messaggi recenti
  Visualizza messaggi
Pagine: [1] 2 3 ... 32
1  Linguaggi di programmazione / Ambienti di programmazione / Re: Consiglio per sviluppare su WEB inserita:: Aprile 29, 2013, 08:02:07 pm
Citazione
da anni sviluppo in C# e vorrei per esigenze di lavoro iniziare a sviluppare su WEB.

A meno che tu abbia intenzione di imparare Java o PHP la scelta migliore per te è certamente usare ASP.Net, e quindi Visual Studio (che immagino avrai già installato).

"pesante" non vuol dire nulla, se hai un i7, almento 8GB di RAM ed SSD sei a posto, e questa mi pare una condizione del tutto normale per uno sviluppatore.
Ovviamente avrai anche il tuo bel SQL Server Express (2008 R2/2012) in locale.

Comunque se non conosci affatto lo sviluppo web dovresti cominciare con HTML, CSS e JavaScript, per almeno un mesetto potresti provare a fare qualche pagina web non dinamica (senza operazioni CRUD su database). Il mio consiglio è comunque di lasciare stare inizialmente le librerie JavaScript (jQuery e simili) e cercare di imparare il più possibile la sintassi e il "funzionamento" generale.

Citazione
Ho visto che l'orientamento negli ultimi è sviluppare su javascript...
No, JavaScript è di fatto l'unico linguaggio client side usato, non un "orientamento". Esso viene eseguito "esclusivamente" all'interno del browser che sta visualizzando la pagina web e quindi non ha nessuna possibilità di accedere (senza effettuare chiamate HTTP) alla base dati presente sul server.

ASP.Net (C# o VB.Net) è il linguaggio server side che elabora le richieste ricevute dal browser ed esegue operazioni che possono richiedere interazione con il database o con il sistema operativo e file system sottostante (server web). Finita l'elaborazione ritorna il risultato al browser (o qualunque altro soggetto abbia fatto la richiesta HTTP).

Ciao
2  Linguaggi di programmazione / C/C++ / Re: Aiuto e consigli per programma reale inserita:: Marzo 08, 2013, 11:32:42 am
Purtroppo non conosco il C++.
Quando avrai l'url del progetto su Github riportala qui, sarà certamente "visionata" da chi conosce il linguaggio e forse troverai qualcuno interessato, soprattutto perché il progetto è ancora piccolo e richiede pochissimo tempo per "entrare".

ciao
3  Linguaggi di programmazione / C/C++ / Re: Aiuto e consigli per programma reale inserita:: Marzo 06, 2013, 08:08:05 pm
Per il versioning, se usi Visual Studio ti consiglio caldamente il TFS gratuito (richiede un account Microsoft Live ) che è integratissimo con l'IDE.
Altrimenti, io uso Bitbucket con Mercurial (Hg) ovviamente gratuito per il tuo scopo. Anche Github è molto quotato.

Un consiglio per lo sviluppo. Prima di scrivere un'altra sola riga di codice prepara un documento di analisi e specifiche tecniche dove come primo punto elenchi le finalità del programma.
Dedica molto alla creazione di un elenco dei casi d'uso integralo sempre con nuove "idee".

Come ordine di priorità io useri la seguente: funzionante, professionale, bello.
Quindi il primo obiettivo sarebbe fare poche cose, ma funzionanti in tutti i casi.

Ciao.
4  Server Side / SQL e Database / Re: [vb2012] Problema Datagirdview inserita:: Febbraio 27, 2013, 09:41:39 pm
Conviene usare il termine "tabella" sempre e solo per indicare tabelle di database e con "DataTable" al sua "rappresentazione" in forma di oggetto presente nel linguaggio, così non si crea confusione tra le due cose.

Citazione
La mia griglia si popola dei dati che ho memorizzato senza problemi.

Riesci quindi (in apertura del Form) a vedere quanto al momento è contenuto nella tabella Storico.

La mia idea è che il PLC vada visto come sorgente dati del database e inserisce record nella tabella Storico, ma non li aggiorna (nel senso di operazioni "Update" di SQL), è corretto?

Citazione
Quando apro la form dove visualizzo la datagridview verifico ed aggiungo nella tabella i nuovi record che leggo dal PLC. Però questi record si aggiornano nel PLC mentre questo sta lavorando. Il mio problema è che, una volta che ho salvato la riga nella tabella, non riesco ad aggiornala con i nuovi dati letti dal PLC. O meglio, usando le righe di codice postate, non ottengo il risultato richiesto.

In base alla mia affermazione precedente, qui non ho proprio capito cosa fa (o dovrebbe fare) il GridView (con annessi TableAdapter, BindingSource e DataSet) e cosa fa il PLC sul database.
Non ho idea di cosa sia il PLC ma per me potrebbe essere ad esempio un barcode reader che scrive le sue letture sul database. Va bene come supposizione?

La parte di codice che hai marcato con "Per aggiungere le nuove righe" è inserita in una apposita funzione, immagino.

E (se è corretto quanto detto) questa funzione termina con
History.Tables("Storico").Rows.Add(newrow)
e ti aspetti che tale riga sia salvata sul database History?

La parte marcata con "Per pulire le tabelle" che termina con
Storico_BS.ResetBindings(True)
dovrebbe eliminare tutti i record dalla tabella "Storico"?

Ti rimando alla definizione ufficiale dei DataSet tipizzati e qui per tutto il resto e link agli esempi, sottolinenado questo:
Citazione
È quindi possibile accedere mediante il nome alle tabelle e alle colonne, invece di utilizzare metodi basati sulle raccolte.
Come effetto più evidente avrai Storico.MiaColonna (che è un tipo ben preciso, stringa, intero, decimal...)
invece del generico Storico.Colums["nome colonna"] che contiene un Object.

Questo (lasciamo stare le performance) ti permette di scrivere codice più leggibile e più facilmente e evita dei possibili errori. Cosa succede se metti un intero in una colonna che accetta un altro tipo?
Il codice compila ma nel caso migliore va in errore durante l'esecuzione perché il comando SQL risultante scatena un errore, ma potrebbe riuscire a inserire le mele al posto delle pere senza che tu te ne accorga. E cosa succede se cambi il nome della colonna o la elimini?

Per questo è brutto vedere
DataRow newRow = ...
newRow("[nome colonna]") = [mio oggetto di QUALSIASI tipo]
invece di
tableAdapter.Insert( [elenco di parametri AGGIORNATO e di di tipo ESATTO]) e il corrispondente .Update(...)
Per ogni DataTable tipizzato esiste il DataRow tipizzato (tu avrai StoricoRow) che è certamente migliore di un DataRow generico, ma in questo momento non riesco a mostrarti un esempio.

Forse è una precisazione inutile, perdonami se ripeto cose che già conosci, ma voglio rimarcare quanto segue.
Un DataSet è una rappresentazione completamente slegata dalla base dati.
Le operazioni che compi sui DataTable esistono solo in memoria.
Ogni DataRow ha delle proprietà che ne indicano lo stato, ovvero se sono rimaste invariate o se sono "dirty" (insert, update, delete) rispetto al database.
Il comando AcceptChanges() del DataTable (semplificando) scatena la creazione dei comandi SQL da usare e li esegue (tutti quelli necessari, in base allo "stato" di ogni DataRow).

Ho aggiunto un bottone alla mia toolbar ed alla pressione inserisco un record nella tabella ottenendo anche l'aggiornamento istantaneo della visualizzazione in griglia. Il metodo Reload l'ho postato precedentemente e i dati sono ovviamente statici e non letti da controlli (o presi dalla griglia). Scusa se è C# ma è certamente leggibile, altrimenti chiedi (Monei è il mio DB, Entry è la mia versione del tuo "Storico").

      
Codice:
private void toolStripButton2_Click(object sender, EventArgs e)
{
CreateEntry();
Reload();
}

private void CreateEntry()
{
MoneiDataSetTableAdapters.EntryTableAdapter tableDataAdapter = new MoneiDataSetTableAdapters.EntryTableAdapter();
tableDataAdapter.Insert(null, 123.45m, DateTime.Now, DateTime.Now, DateTime.Today, 2, null, "test - " + Guid.NewGuid().ToString());
moneiDataSet.Entry.AcceptChanges();
}

ciao
5  Server Side / SQL e Database / Re: [vb2012] Problema Datagirdview inserita:: Febbraio 26, 2013, 10:45:58 pm
Ho usato un progetto Windows Form di test in VS 2012 con Framework .Net 4.5 (C#).
(ritengo che VB .Net sia la sezione più corretta per questo thread).

Ho creato un Form e ci ho messo un DataGridView.
Ho creato un DataSet tipizzato.
Ho creato un BindingDataSource.
Il BindingDataSource ha come DataSource il DataSet e una specifica tabella di questo.
Ho collegato il DataGridView ad un BindingDataSource.

All'apertura del Form la griglia viene automaticamente popolata.
Ho aggiunto al Form una ToolStrip e ci ho inserito un bottone che all'evento "Click" richiama la seguente funzione:
Codice:
private void Reload()
{
MoneiDataSetTableAdapters.EntryTableAdapter tableDataAdapter = new MoneiDataSetTableAdapters.EntryTableAdapter();
tableDataAdapter.Fill(moneiDataSet.Entry);

/*
MoneiDataSetTableAdapters.EntryTableAdapter è il TableAdapter che automaticamente il wizard ha creato alla creazionedel DataSet tipizzato.
moneiDataSet è il DataSet tipizzato (monei è il mio DB, sarebbe il tuo History)
    Entry è la tabella da cui prendere i dati, sarebbe il tuo Storico
*/
}
Che dovrebbe corrispondere nel tuo caso a qualcosa di simile:
StoricoTableAdapter.Fill(History.Storico)

Alla pressione del bottone la griglia viene aggiornata con i record ri-letti dal database.

Se riesci a fare questa operazione, rendendo inutile il riavvio del programma, poi vediamo il resto.
In particolare questa tua frase mi sembra ambigua o poco chiara:
Citazione
Ora il mio problema è che se apro la tabella mentre mi transita un oggetto i suoi dati non vengono aggiornati nel datagridview associato ad essi, nemmeno facendo l'update del tableadapter dopo il comando SQL di Update della riga.
Infatti il DatagRidView non è assolutamente "collegato" al database ("mentre mi transita un oggetto i suoi dati non vengono aggiornati nel datagridview associato ad essi"), e deve obbligatoriamente essere gestita una rilettura dei dati. L' "Update" del TableAdapter non aggiorna la griglia ("nemmeno facendo l'update del tableadapter dopo il comando SQL di Update della riga."), ma bensì aggiorna il database con i dati modificati/inseriti/cancellati in esso, è di fatto un "update" della base dati.
6  Server Side / SQL e Database / Re: [vb2012] Problema Datagirdview inserita:: Febbraio 26, 2013, 09:25:58 pm
Intrinsecamente ti ho chiesto se è un progetto Windows Form.
Sarebbe anche utile conoscere quale versione del Framework hai impostato per il progetto.

Ma la riga
StoricoTableAdapter.Update(History.Storico)
ti compila?
Non capisco come sia possibile una sintassi [Database].[tabella].

Che tipi di oggetto è "History"?
Dovrebbe essere un DataSet (tipizzato),  giusto?
Lo usi interrogando ".Storico", ma poi usi anche ".Tables([nome tabella])", sono equivalenti ma il secondo è "generico", lo sai, conosci questa differenza?
 
Spiega quali passi hai seguito per creare quei controlli e dove hai messo il codice che hai postato.

E poi spiega questo:
Storico.History.Storico.Clear()
Che oggetto è l'istanza "Storico" (la prima) che contiene il DataSet, è forse il Form?

E "History_data" e "Storico_BS"  cosa sono?
Immagino che il DataSet tipizzato "History" sia collegato al BindingDataSource "StoricoBindingDataSource", giusto?

Il tuo primo step, potrebbe essere sintetizzato in: mostrare una griglia popolata con N record in ordine decrescente che si aggiorni ogni N secondi e su richiesta esplicita dell'utente (bottone sulla toolbar)?


7  Server Side / SQL e Database / Re: [vb2012] Problema Datagirdview inserita:: Febbraio 19, 2013, 07:18:44 pm
Credo manchino delle informazioni.
Ad esempio con "Storico.History" sembra che "Storico" sia un tuo oggetto ("it" language) che ha la proprietà "History" ("en" language).
Inizialmente avevo supposto che Storico fosse il DataGridView, infatti ho creato un Windows Form  (è un progetto di tipo Windows Form?) e ho inserito un DataGridView dandogli nome "Storico". Poi nell'evento "Load" del Form ho inserito il tuo codice. La proprietà "History" (la curiosità su questo oggetto ha attirato la mia attenzione) non esiste..
Non sono riuscito a capire come riuscire a replicare il tuo problema e quindi ho lasciato perdere.

Sì, a mio parere manca qualche informazione, cerca di metterti nei panni di chi legge il tuo post.

ciao
8  Linguaggi di programmazione / Java / Re: JAVA e App Windows 8 inserita:: Gennaio 07, 2013, 06:06:34 pm
Citazione
Abbiamo sviluppato un'applicazione JAVA per il web.
Chiaramente è necessario lanciare un browser per farla funzionare.
Quindi è un sito web, o no?

Tutti i browser hanno la modalità full-screen attivabile con il tasto "F11".
Se è sufficiente potete semplicemente far apparire un "suggerimento" per l'utente.
9  Server Side / Microsoft SQL Server / Re: web services MSSQL 2008 r2 inserita:: Gennaio 03, 2013, 03:24:48 pm
Stamattina non riuscivo ad aprire il link postato da @DEV-01.
Adesso l'ho visto (ed anche altro sull'argomento) e mi pare di ricordare qualcosa, ma effettivamente in tanti anni di lavoro con SQL Server non ho mai incontrato qualcuno o qualcosa che sfruttasse questa funzionalità.
Al contrario di quello che dici credo che non sia stata deprecata ma migliorata (se non ricordo male prima il dialogo era poco "aperto", ovvero possibile solo tramite strutture XML ben precise). Probabilmente sarà cambiata la nomenclatura e il modo di funzioanare, ma di certo verso il meglio.
Come già detto esistono una marea di riferimenti, quindi la cosa sembra possibile senza grandi difficoltà.

Ho un server virtuale su Aruba ma non so come tu possa amministrare il SQL Server che hai acquistato, immagino tramite un SQL Server Management Studio (installato in locale) e/o tramite una loro interfaccia web. Ammesso che tu riesca a inizializzare questo web service poi c'è da vedere se la porta 80 sul server sia aperta, in genere sono restrittivi.

Se non hai l'SSMS quindi ti consiglio di installarlo, semplicemente installando la versione Express del SQL Server in locale (stando attendo a scegliere un download che comprenda questo tool, o forse è disponibile anche a parte), ti sarà di certo utile (anche un DB di test/sviluppo).
A parte questo suggerimento, sono ignorante sull'argomento e quindi non so dirti altro, né guidarti su un buon esempio.

ciao
10  Server Side / Microsoft SQL Server / Re: web services MSSQL 2008 r2 inserita:: Gennaio 03, 2013, 10:40:41 am
Quando dici "sono in wan" intendi questo: WAN su Wikipedia ?

A mio parere ti serve implementare un web service che scriva sul database.
Per fare questo ti serve un Web Server scritto in un qualche linguaggio a te congeniale (ASP.Net, PHP, Java). Sono tutti in grado di connettersi ad un database remoto SQL Server ma devono essere publicati su un HTTP server (IIS, Apache ...).

Non capisco le seguenti affermazioni:
Citazione
pensavo quindi di caricare dei WS su un db per l'acquisizione dei dati.
e
Citazione
ho visto che nel 2005 era possibile integrare dei WS

Puoi darmi riferimenti per capire (un DB server che integra WS)?

ciao
11  Linguaggi di programmazione / ASP.NET / Re: pagina registrazione utenti inserita:: Dicembre 27, 2012, 12:26:06 pm
Benissimo, buon lavoro/studio.

ciao
12  Linguaggi di programmazione / ASP.NET / Re: pagina registrazione utenti inserita:: Dicembre 27, 2012, 02:41:43 am
Ho verificato e la sintassi con la funzione Upper che hai usato è corretta e funzionante:
Codice:
Dim cmStr As String = "Select COUNT(*) FROM Utenti WHERE Upper(UserName) = Upper(@username)"
Dato però che infine hai il risultato voluto omettendola non ho capito se ti sia ben chiaro o meno il concetto di case-sensitive per lo username.
Generalmente (non mi viene in mente un solo caso contrario) non si permette ad un applicativo di gestire utenti con username differenti per il solo CASE (lettere maiuscole/minuscole).
Se tu hai questa necessità, confermamelo, altrimenti l'uso della funzione Upper od in alternativa dell'operatore "like" sono praticamente indispensabili (vedi note del precedente post), a meno di fare un confronto tramite il linguaggio applicativo che si sta usando, ovvero dopo aver letto il dato (soluzione che personalmente adotto di solito).

Superato il problema specifico (e il dubbio) della query per la verifica dell'esistenza del nome utente vedremo quale altro problema hai incontrato e immagino qualcuno ti darà una mano.
Già da ora comunque ti dico che sarebbe oppurtuno che riportassi il codice usato perché, come spesso viene ricordato, senza sfera di cristallo solo tu conosci il codice prodotto e le logiche che hai applicato.
Soprattutto non vedo perché usare l'evento Load della pagina invece che fare la verifica nell'evento del bottone (ma questo é forse spiegato dal poco ortodosso uso della IsPostBack).

DEVO IMMAGINARE che nonostante tu abbia verificato che la username inserita è già usata il tuo codice non esce dalla funzione... ma mi sembra una spiegazione talmente banale che di certo occorrerà vedere il codice da te prodotto per trovare il vero problema.

Citazione
mi dice che è già registrato ma lo registra ugualmente! cosa mi conviene fare?
Ma prima di tutto, cerca di capire quanto sia ingenuo (e poco produttivo) pensare che qualcunaltro oltre a te possa dare un senso alla domanda che hai fatto (se tra un mese rileggerai questo post ti sarà immediatamente evidente). Ti faccio questa osservazione solo come nota costruttiva e per utilità comune, come il resto.

Il codice va postato inserendolo nell'apposito tag [ code ], operazione facilitata dall'apposito tasto "#" sulla seconda fila di bottoni. Fai una prova corregegndo magari i post precedenti.
13  Linguaggi di programmazione / ASP.NET / Re: pagina registrazione utenti inserita:: Dicembre 26, 2012, 08:15:02 pm
Hai preso la via delle query parametrizzate, bene, ma hai fatto un mix.
Usare il segnaposto nel testo del comando SQL ti esonera dall'uso degli apici, come nell'esempio del link del precedente post (il mio esempio di codice è errato), che invece sarebbero necessari nel caso di valori "in chiaro".
La Upper mi pare usata correttamente.

Usa anche TxtNome.Tex.Trim(), è una buona abitudine.
14  Linguaggi di programmazione / ASP.NET / Re: pagina registrazione utenti inserita:: Dicembre 24, 2012, 09:04:23 pm
Mancano gli apici singoli intorno alla variabile di tipo testo (TxtNome.Text).

Ti do alcuni consigli e spunti.
Di norma si tolgono gli eventuali caratteri spazio inseriti volontariamente o meno dall'utente:
TxtNome.Text.Trim()

Di norma il confronto per lo username è case insensitive, puoi usare semplicemente un "like" per il confronto (al 99% il tuo DB ha collation Latin1_General_CI_AS, dove CI indica "case insensitive") oppure ti segnalo l'utilizzo della funzione Upper (o Lower), perché so che stai usando un SQL Server:

Codice:
Select COUNT(*) FROM Utenti WHERE Upper(UserName) = Upper('[i]@username[/i]')

Ho volutamente usato la sintassi per le query con parametri, perché sono un'ottima cosa (perché, come), aumentano la leggibilità e prevengono dal SQL injection (il tuo codice è il classico esempio di vulnerabilità).

ciao
15  Linguaggi di programmazione / ASP.NET / Re: Passaggio parametri tra pagine asp.net inserita:: Dicembre 19, 2012, 04:20:30 pm
Non è detto che la mia sia la soluzione giusta al caso reale però ho voluto "mettere la pulce nell'orecchio" a @Robert23 ed altri che capiteranno su questo post. Spero di aver destato almeno un po' di curiosità in merito a tali classi ed al loro utilizzo. É comunque valido tutto quanto da te detto riguardo l'oggetto Session ed il suo utilizzo.
Pagine: [1] 2 3 ... 32
Copyright © 2011 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



Links to Page