View Full Version : [VB] consiglio: come organizzare un magazzino
davidino80
04-04-2004, 14:28
Salve a tutti.
Sto progettando in VB un software x la gestione magazzino.. ovvero che mi dia la possibilità di caricare/scaricare articoli, visionarli, controllarne i movimenti.. ecc
Per ora lo sto strutturando su carta..
Volevo chiedervi se, a parere vostro, è + conveniente/semplice strutturare il software su lettura/scrittura su FILE, piuttosto che su foglio EXCEL, piuttosto che su un DB di ACCESS..
Altri consigli sono ben accetti, sempre che non sia troppo particolare come struttura, visto il mio livello di conoscenza nn ancora perfezionato.
Grazie ;)
Per questo progetto: VB + Access
davidino80
04-04-2004, 16:19
Originariamente inviato da matpez
Per questo progetto: VB + Access
immaginavo che fosse la strada migliore..
Ieri stavo dando un'occhiata al manuale su una sezione "interagire con i dati" dove si parla del Visual Data Manager.. intendi questo?
Cioè mi creo il mio db e uso i datasource x capirci... :confused:
sisi :p
esatto!!
PS: il database lo puoi creare anche in access
davidino80
04-04-2004, 17:08
Originariamente inviato da matpez
PS: il database lo puoi creare anche in access
si si questo è vero.. soltanto che nn avendo installato Access è cmq comodo questo
nel frattempo m'è venuto un dubbio: l'oggetto DATA è l'unico che mi può gestire il db?? perchè nn è che sia versatilissimo..
Ad esempio, se voglio importare tutte le entri del db in un listBox per comodità visiva.. come posso fare?
grazie x le dritte
Infatti l'oggetto data se è possibile sarebbe meglio nn utilizzarlo!!
Prova a vedere questo esempio, devi selezionare nelle referenze(se nn lo fa in automatico) la libreria: Microsoft ActiveX Data Object 2.7 ... io ho la 2.7, ma cmq ne va bene anche una meno recente!
davidino80
04-04-2004, 18:45
grazie mille do un'occhiata
davidino80
04-04-2004, 19:59
Originariamente inviato da matpez
devi selezionare nelle referenze(se nn lo fa in automatico) la libreria: Microsoft ActiveX Data Object 2.7 ... io ho la 2.7, ma cmq ne va bene anche una meno recente!
il tuo prog funziona correttamente.. ma in caso dovessi costruirne uno simile, come aggiungo la Microsoft ActiveX Data Object nel mio progetto? dal menù COMPONENTI?
.. xkè infatti nn trova i tipi variabile OLEdb.xxxx
grazie ciao
Dal menu Progetto -> Referenze (in inglese: Project -> References)
davidino80
05-04-2004, 09:53
Originariamente inviato da matpez
Dal menu Progetto -> Referenze (in inglese: Project -> References)
found :mano:
davidino80
05-04-2004, 12:29
allora funziona tutto perfettamente.. ho capito come fare. :D
ho un piccolo dubbio: sono riuscito ad importare tutte i record in un listbox. mi chiedevo se c'è un comando che permette di spostare VISIVAMENTE i vari campi inseriti. mi spiego meglio:
campo1: CODICE
campo2: DESCRIZIONE
listbox1.additem rs("codice") & spaziovariabile & rs("descrizione")
dove spaziovariabile deve essere sempre quello in modo da formare delle colonne precise. ho provato con vbTab però spazia sempre in modo fisso.. quindi la riga dopo mi viene sballata ad esempio se il codice è + lungo o + corto del precedente.
spero di essermi spiegato bene. grazie x le dritte
Ti conviene utilizzare un tabella.... na buona so trova nel controllo Microsoft windows Common Control 6.0 (SP4), oggetto ListView in modalità report :)
Guarda l'esempio :D
davidino80
05-04-2004, 12:59
sei la mia salvezza matpez :D troppo giusto
Originariamente inviato da davidino80
sei la mia salvezza matpez :D troppo giusto
hehehehe :oink:
Se serve sai dove trovarmi :)
davidino80
05-04-2004, 14:12
Originariamente inviato da matpez
hehehehe :oink:
Se serve sai dove trovarmi :)
senta Prof, se esce fuori un bel lavoro glielo uppo così mi da un voto :D e magari qualche dritta :D
ciao grazie
davidino80
05-04-2004, 14:27
ecco un altro dilemma!! :eek:
come posso cancellare tutte le entry nel LISTVIEW??
mi occorre perchè ho messo un tasto x rieseguire l'aggiornamento, e ovviamente senza questa operazione gli articoli mi vengono sommati a quelli precedenti.
esempio:
--> articoli trovati nel listview = 300
_aggiornamento_ (quindi richiamo la stessa procedura di lettura dB)_
--> articoli elencati ora: 600
dai... il modo c'è sicuramente.. ho provato con listview1.refresh ma nn funge
Dai nn gettare la spugna subito...cerca cerca cerca e vedi che lo trovi...
Se proprio nn lo trovi allroa te lo dico :)
davidino80
05-04-2004, 15:41
Originariamente inviato da matpez
Dai nn gettare la spugna subito...cerca cerca cerca e vedi che lo trovi...
Se proprio nn lo trovi allroa te lo dico :)
ok :O
solo una cosa, che cmq non mi da problemi. quando apro/chiudo il db devo usare:
cn.open cn.closed (cn=connection)
oppure
rs.open rs.closed (rs=recordset)
penso la prima... Ma il recordset se resta aperto dopo il termine del programma crea problemi?
grazie x la pazienza...
Apri:
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & sPathDB
cn.Open
Chiudi:
rs.close
cn.close
Set rs = Nothing
Set cn = Nothing
Il recordset cmq ti conviene chiuderlo tutte le volte che lo usi :)
Così alla fine del programma, nn so all'UnLoad per esempio metti solo cn.close :P
davidino80
05-04-2004, 16:32
eh già infatti... l'avevo pensato anche io così :D
nel frattempo mi dici come pulire il ListView eheheh! thanks
:( , toglimi una curiosità in amicizia, ma perchè io le cose le trovo da solo e tu no? secondo me nn hai molta voglia di stare li 3 ore a cercare :P :P :P :P :P :P :P :P :P
hehehehehe
Ecco a te:
Dim nI As Integer
Dim nLen As Integer
nLen = ListView1.ListItems.Count
For nI = nLen To 1 Step -1
ListView1.ListItems.Remove nI
Next
:sofico: :oink: :sofico:
davidino80
05-04-2004, 16:48
:mc: xkè sul mio manuale c'è poco.. e sull'help in linea devo capirlo un po meglio :eek:
scusami hai ragione, ti devo troppo una birra :D
Originariamente inviato da davidino80
:mc: xkè sul mio manuale c'è poco.. e sull'help in linea devo capirlo un po meglio :eek:
scusami hai ragione, ti devo troppo una birra :D
Ma difatti i manuali servono solo per la sintassi :), tutto il resto con VB lo vai ad intuizione, cioè.... anche perche se tu fai Oggetto. ti vine furi tutti le proprietà e metodi.. + comodo di così!!
Lo dico solo perchè a volte nn hai la possibilità di chiedere in giro hehehhee che mondo difficile :oink: :oink: :oink: :) :D :p :cool: :oink: :rolleyes:
davidino80
05-04-2004, 18:19
lo uso spesso l'help in linea.. ma non c'è tutto a dir la verità. ad esempio.. il comando "set" con DEFINIZIONE nn lo trova..
va beh, per oggi direi che sono cotto. sono riuscito a venir fuori da QUASI tutto :cry: nn riesco a scrivere sul DB!!! :cry:
devo inserire 9 campi stringa nella tabella "RICAMBIDP".. da campo1 a campo9.. nell'ordine delle 9 colonne di access (codice, descr... )
Mi dice sempre "ERRORE DI SINTASSI NELL'ISTR. INSERT INTO"
:cry::cry::cry::cry:
ecco la query incriminata:
sSql = ""
sSql = sSql & "INSERT INTO RicambiDP(CODICE, DESCR, MOD, QTA, ATTUALE, PREZZO, DATAINS, DATAMOD, NOTE)" & vbCrLf
sSql = sSql & "VALUES(" & campo1 & "," & campo2 & "," & campo3 & "," & campo4 & "," & campo5 & "," & campo6 & "," & campo7 & "," & campo8 & "," & campo9 & ")" & vbCrLf
ma dove cavolo sto sbagliandoooooooo!!! il tuo esempio è identico e funzia........ :cry: :cry: :cry: porta pazienza..........
Sbagli questo...i campi di testo la parola deve stare fra gli apici es:
'valore'
in caso di campi numerici allora si possono omettere :p
davidino80
05-04-2004, 19:28
ahhh! quindi così è corretto?
sSql = sSql & "VALUES(' & campo1 & ',' & campo2 & ',' ....)"
Originariamente inviato da davidino80
ahhh! quindi così è corretto?
sSql = sSql & "VALUES(' & campo1 & ',' & campo2 & ',' ....)"
Si se sono tutti campi stringa :)
davidino80
05-04-2004, 20:03
so di essere pesante.. :cry: ma continua a darmi il medesimo errore:
sSql = ""
sSql = sSql & "INSERT INTO RicambiDP(CODICE, DESCR, MOD, QTA, ATTUALE, PREZZO, DATAINS, DATAMOD, NOTE)" & vbCrLf
sSql = sSql & "VALUES(' & campo1 & ',' & campo2 & ',' & campo3 & ',' & campo4 & ',' & campo5 & ',' & campo6 & ',' & campo7 & ',' & campo8 & ',' & campo9 & ')" & vbCrLf
ora la stringa è corretta.. ma nada :cry:
ho perso 10 anni di vita oggi... :D
Tu hai messo una mega stringa " "
Ma le tue varibili così nn vengono mica scritte nella stringa, fai bene attenzione!!! :)
davidino80
05-04-2004, 21:20
Originariamente inviato da matpez
Tu hai messo una mega stringa " "
Ma le tue varibili così nn vengono mica scritte nella stringa, fai bene attenzione!!! :)
i miei campo1, campo2, campo3 ecc... sono variabili stringa, non numeriche. ho provato anche a dividerle tutte con le virgolette.. e a parte il casino strutturale che viene fuori, mi da sempre errore. cmq sbaglio sicuramente questa parte? nn l'INSERT INTO (ovvero la riga sopra.. )
sSql = ""
sSql = sSql & "INSERT INTO RicambiDP(CODICE, DESCR, MOD, QTA, ATTUALE, PREZZO, DATAINS, DATAMOD, NOTE)" & vbCrLf
sSql = sSql & "VALUES('" & campo1 & "','" & campo2 & "','" & campo3 & "','" & campo4 & "','" & campo5 & "','" & campo6 & "','" & campo7 & "','" & campo8 & "','" & campo9 & "')" & vbCrLf
davidino80
05-04-2004, 22:31
INCREDIBILMENTE.. ancora errore.
boh guardo domani altrimenti divento fuso...
ciao e grazie come al solito mat
Sarebbe meglio avere il progetto ed il database! :p
davidino80
06-04-2004, 13:49
riesumo il thread :D
alora riassumo cosa RIESCO a fare:
- leggere dal db (select * .... )
- cancellare stringhe (delete *... )
ma non riesco ancora a inserirne!! (INSERT INTO nometabella.. )
adesso riguardo un'altra volta...
davidino80
06-04-2004, 13:58
EVVAAIIIIIII :D :D :D :D :D
sono riuscito ad inserire un campo alla volta!!!!
sSql = sSql & "INSERT INTO RicambiDP(CODICE)" & vbCrLf
sSql = sSql & "VALUES ('" & campo1 & "')" & vbCrLf
Set rs = cn.Execute(sSql)
così il campo1 del codice viene inserito!! Ora vado con 2 campi di seguito.
mi viene un dubbio.. che qualche campoX sia vuoto e quindi rompa le balle.... mmmm :(
davidino80
06-04-2004, 14:11
INCREDIBILE... tutto sto casino x il campo NOTE!!! che nn vuole andare..
.. ho provato a toglierlo e inserisce tutto correttamente.. :confused:
adesso provo a ricreare la colonna sul db.... che altro può essere... il campo NON è vuoto
Infatti, guarda l'altro 3d che abbiamo hai replicato sul database del campo Null, li c'è una funzione che ti potrebbe venire comodo :)
Io fino a stasera nn posso rispondere.
ciaooooo
davidino80
06-04-2004, 14:22
Originariamente inviato da matpez
Infatti, guarda l'altro 3d che abbiamo hai replicato sul database del campo Null, li c'è una funzione che ti potrebbe venire comodo :)
Io fino a stasera nn posso rispondere.
ciaooooo
vai tranquillo HO RISOLTO!!!! :D
la tua funzione del null è corretta però in caso di SCRITTURA nn serve. Non indovineresti mai come ho fatto a risolvere!!! :D
ho cambiato nome alla casella "NOTE" sul DB in "COMMENTI" e così funziona alla grande!!
magari è una parola riservata di Access......... :confused:
cmq ora va tutto. grazie
davidino80
06-04-2004, 15:46
altro passo avanti.
allora ora funge tutto.. Mi chiedo se è possibile (anzi sicuramente) fare un controllo incrociato tra campi. mi spiego meglio.
voglio che in caso la ricerca sul db mi abbia trovato un codice che esiste e quindi mi abbia compilato gli altri campi, quando vado a cambiare valori sarebbe l'ideale se invece di aggiungere una nuova riga lo sovrascrivesse con i valori corretti.
Il mio problema è che nn so se esiste una funzione (la sintassi) che lo verifica..
Ho provato così, unendo le 2 cose:
sSql = sSql & "SELECT *" & vbCrLf
sSql = sSql & "FROM RicambiDP" & vbCrLf
sSql = sSql & "WHERE CODICE='" & campo1 & "'" & vbCrLf
sSql = sSql & "INSERT INTO RicambiDP(CODICE......
sSql = sSql & "VALUES ('" & campo1 & "','" ......
ma non va.
esiste una istruzione tipo INSERT INTO con già un controllo intrinseco? altrimenti, qualche suggerimento?
ciao! :D
Esiste eccomi, e si chiama UPDATE :)
UPDATE [Tabella]
SET Campo1=dato1, Campo2=dato2 etc etc :)
davidino80
06-04-2004, 21:41
Originariamente inviato da matpez
Esiste eccomi, e si chiama UPDATE :)
UPDATE [Tabella]
SET Campo1=dato1, Campo2=dato2 etc etc :)
scusami, devo cmq richiamare il db con il SELECT?
oppure mi basta una cosa del genere:
ssql = ""
sSql = sSql & "UPDATE RicambiDP" & vbCrLf
sSql = sSql & "SET CODICE='" & campo1 & "')" & vbCrLf
Set rs = cn.Execute(sSql)
una query con questa sintassi potrebbe andare?
come hai fatto la seconda...occhio che ti è scappata una parentesi :p
davidino80
06-04-2004, 22:39
l'istruzione mi da errore, parentesi corretta ovviamente.
secondo me manca qualche selezione. io l'avevo pensata così:
sSql = ""
sSql = sSql & "UPDATE RicambiDP" & vbCrLf
sSql = sSql & "WHERE Codice= '" & campo1 & "'" & vbCrLf
sSql = sSql & "SET Descr='" & campo2 & "'" & vbCrLf
perchè deve prima selezionare il record che corrisponde al codice e poi una volta trovata settare la descrizione.
Ho preso il campo "descr" come esempio.. perchè nn voglio ammettere che il codice sia modificabile ovviamente (perchè in
questo caso si deve eliminare il ricambio e ricrearlo)
Nel tuo esempio nn fa un controllo sul record esatto, e quindi mi memorizza tutti i record con la medesima descrizione...
Dai che ci siamo quasi e poi metto il tuo nome e mail sull'About :D
sSql = ""
sSql = sSql & "UPDATE RicambiDP" & vbCrLf
sSql = sSql & "SET Descr='" & campo2 & "'" & vbCrLf
sSql = sSql & "WHERE Codice= '" & campo1 & "'" & vbCrLf
Così dovrebbe andare un po' meglio, ricorda che la parola WHERE di solito è usata sempre in fondo a quasi tutte le SQL :)
davidino80
06-04-2004, 22:59
Originariamente inviato da matpez
Così dovrebbe andare un po' meglio, ricorda che la parola WHERE di solito è usata sempre in fondo a quasi tutte le SQL :)
si in effetti.. ero riuscito a ricostruirla solo che invertivo la 2a e 3a riga.. Mi sembrava + logico il contrario..
cmq.. risolta anche questa :D mitico!
nn ti dico che sotto a tutto il programma ho gestito un sistema di backup a indici di cui NN TI HO CHIESTO NULLA!
Ho fatto tutto da solo e funziona alla perfezione.
Apro un nuovo Db, vede che nn è backappato, lo richiede, crea cartella e file .bak , lo indicizza, crea il log... e se serve fa anche il restore tenendo traccia!! :D :D :D
davidino80
07-04-2004, 08:26
ecco una cosa che potrei chiederti..
In un oggetto StatusBar con proprietà Style=Normal, posso passare qualche variabile alle varie colonne?
Riesco a farlo tranquillamente se Style=Simple (quindi 1 colonna unica) tramite il SimpleText..
Dovrei vederla come un vettore per caso? siccome ho fatto caso che associa un index alle varie colonne...
Che ne so.. statusBar1.index(0).text="testo prima colonna"
:confused:
...bho io mi chiedo perchè nn ci provi da solo :)
cmq
StatusBar1.Panels(1) = "ciao"
StatusBar1.Panels(2) = "da"
StatusBar1.Panels(3) = "me"
etc etc :p
davidino80
07-04-2004, 08:46
cazz nn trovavo il .panel .. li ho provati tutti.. ufff......
davidino80
08-04-2004, 12:47
caro Matpez.. ormai il programma è finito :D
sai cosa manca??? l'installer!
no beh dai, seriamente, ho provato con l'InstallShield ma è abbastanza complicato.
Il problema sostanziale sta nel registrare le dll. la funzione la conosco (regsrv32 xxx.dll) però come posso ricercare quali mi occorrono x esempio x installarlo su un altro pc?
volevo usare un batch, tanto deve copiare 2 file di numero, l'exe e un .dat interno x delle ricerche.
cosa mi consigli? :ave:
OTTIMO!! :p
Bhe io uso Wise Installation System 9.02, naturalmente se tu devi vendere il prodotto nn puoi, primo perchè sicuro nn hai la licenza di VB, secondo ti ci vorrebbe la licenza anche dell Wise ...
Cmq il WISE ti importa i progetti di VB con tutte le dll e ocx utilizzate dal tuo progetto, è molto facile da usare è abb potente.
Se voi qlc installer free, se nn erro se ne parla molto in questo forum, uno dei + buoni è l'inno setup.
PS: io cmq lo voglio vedere il tuo programma... passamelo anche in un bello zippone, poi se mi manca qlc la registro io a mano :)
davidino80
08-04-2004, 15:14
Originariamente inviato da matpez
PS: io cmq lo voglio vedere il tuo programma... passamelo anche in un bello zippone, poi se mi manca qlc la registro io a mano :)
auauauauua come mai!??!?!?!??!?!?!?!!? dopo mi copi il codice!!!! ehehheheh!
grazie delle info mat.. Lo provo sul mio portatile e quando è pronto te lo passo :)auauau cosa ci vuoi fare???!! ciao!
Ma io nn voglio assolutamente il tuo codice :)
io voglio il tuo EXE :oink: :oink: :cool: :rolleyes: ;) :O
Così, voglio vedere cosa hai fatto di bello! :D
davidino80
08-04-2004, 18:08
Originariamente inviato da matpez
Ma io nn voglio assolutamente il tuo codice :)
io voglio il tuo EXE :oink: :oink: :cool: :rolleyes: ;) :O
Così, voglio vedere cosa hai fatto di bello! :D
ehehe aoadssahdahk ok! ti zippo l'.exe e un file che serve da matrice per un db :)
anzi adesso che ci penso, meglio se ti mando un db pieno così fai le prove :D
ciao!
chandler8_2
02-05-2004, 18:04
mi iscrivo... mi interessa un sacco!
anche se fino ad ora non ci ho capito un'H!!:D
davidino80
02-05-2004, 18:30
Originariamente inviato da chandler8_2
mi iscrivo... mi interessa un sacco!
anche se fino ad ora non ci ho capito un'H!!:D
uauauuaua :p ti conviene rileggere tutto x bene xkè dal primo post all'ultimo ho inziato e terminato il programma grazie a matpez!
ora il mio funziona correttamente. ciao!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.