Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407

    database access gestione

    salve a tutti,

    Non so se dipenda dalll'ISP su cui è appoggiato il sito, ma ho notato che per ricavare un valore da una tabella del db e per aggiornare lo stesso sono spesso costretto ad aprire e chiudere il db per ricavare il valore e riaprirlo e richiuderlo per aggiornarlo con la conseguenza che sppesse volte in tutto non funzioni correttamente.

    Di fatto io dovrei poter recuperare questo valore e aggiornarle sempre all'interno della medesima pagina.
    Per fare questo non esiste una connessione al db che vada bene per entrambe le fasi, in modo da poterlo aprire una volta e chiuderlo una volta?

    La fase di recupero del valore l'ho creata io, mentre quella di update me l'ha passata un mio collega e avendo notato che la connessione al db fatta da me per la fase di recupero del valore non corrisponde a quella del mio collega ho chiuso il db dopo aver recuperato il valore e l'ho riaperto per eseguire l'update sfruttando la connessione del mio collega.

    il problema però secondo me è di altra natura perchè la tabella del db su cui lavoro deve contenere solo un recordset e 2 campi, id di tipo contatore e incremento di tipo numerico; solo che la fase di update secondo me non vale quando il db è vuoto ossia al primo incremento vale dal secondo in poi... quindi come fae una procedura di registrazione per il primo inserimento e una di aggiormanto per gli inserimenti sucessivi il tutto messo nella stessa pagina?

    Grazie

  2. #2
    Non è che sia chiarissimo il tuo quesito, comunque direi che c'è decisamente qualcosa che non va nella logica della tua pagina, se apri e chiudi due volte la connessione allo stesso DB.... Magari posta qualche stralcio di codice.

  3. #3
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407
    in realtà il codice non l'ho ancora creato anche perchè sorgono dei problemi che non so ancora come risolvere nella formazione della struutra.
    Ho stralci di idea quelli si, tentativi mal riusciti..

    infattio il mio obiettivo è quello di fare un controllo su una variabile di sessione, se questa variabile è <>"" allora basta che ne visualizzi il contenuto a video.
    Ma se la variabile è ="" allora deve iniziare un procedimento che è poi quello della 1000 e più grane.

    Infatti dovrei aprire il db acess e aggiornare (aggiungendo +1) ad un campo di tipo numerico dentro ad una tabella avente un solo record con id logico (1).

    il problemi sorgono quando il record non è ancora stato creato, all'inio dei tempi, e quindi all'inizio non si può parlare di un update ma necessariamente di un insert ed oltre a questo una volta che il campo numerico dell'unico record raggiunge un certo numero ale campo va riportato a 1 per permettergli poi di riprendere ad incrementarsi via via.

    assieme a tutti questi problemi appunto mi insorge quello più anomalo di non riuscire ad aprire e chiudere una sola volta il db

    grazie

  4. #4
    Utente bannato
    Registrato dal
    Jan 2003
    Messaggi
    2,407
    diciamo che il codice che ho sviluppato fino ad ora potrebbe essere questo

    codice:
       <%
    
    	'inizializzo la variabile 
    	ValoreDB=0
    	Contatore=""
    	
    	If Session("Counter")<>"" then 'visualizzo il contenuto della variabile di session dandogli la forma a 6 cifre adeguata
    	 	'valuto la lunghezza del valore e formo la cifra da visualizzare
    		If Len(Session("Counter"))=1 then
    			Contatore = "00000" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=2 then
    			Contatore = "0000" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=3 then
    			Contatore = "000" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=4 then
    			Contatore = "00" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=5 then
    			Contatore = "0" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=6 then
    			Contatore = Session("Counter") 
    		End if
        End if
    	
    	If Session("Counter")="" then 'devo controllare se nel db persiste il record con ID = 1
    		
    		'apro la connessione con il db
    		set myConn = server.CreateObject("ADODB.Connection")
    		dim strConnDb
    		strConnDb = ""
    		strConnDb = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = G:/Progetti Lavori/Web Project/Da Fare/Tessuti/tessuti.mdb"
    		'strConnDb = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & server.mappath("/mdb-database/tessuti.mdb")
    		myConn.Open(strConnDb)
    		
    		set myRSComS = server.CreateObject("ADODB.Recordset")
    		mySqlSelect = "select * from ContatoreVisite where ID = 1"
    		myRSComS.Open mySqlSelect, myConn, 1 ,1	
    
    		function formatta_sql(mia_stringa)
    			formatta_sql=replace(mia_stringa,"'","''",1,-1)
    		End function
    		
    	    'effettuo il controllo del valore contenuto nel campo Visitatore!
    		If myRSComS("Visitatore") = 999999 Then 
    			'Allora riporto il valore a 1 e rendo valida la variabile di sessione!
    			ValoreDB=1
    			Session("Counter")=ValoreDB  
                'Aggiorno il db!
    			dim strInsertDati
    			strInsertDati=""
    			strInsertDati="update ContatoreVisite set Visitatore=:1: where id=:1:"
    			strInsertDati=replace(strInsertDati,"1",formatta_sql(cstr(ValoerDB)))
    			myConn.Execute strInsertDati
    		End if
    		If myRSComS("Visitatore") < 999999 Then 
    			'Allora incremento il valore e rendo valida la variabile di sessione!
    			ValoreDB=(myRSComS("Visitatore")+1)
    			Session("Counter")=ValoreDB
                'Aggiorno il db!
    			dim strInsertDati2
    			strInsertDati2=""
    			strInsertDati2="update ContatoreVisite set Visitatore=:1: where id=:1:"
    			strInsertDati2=replace(strInsertDati2,":1:",formatta_sql(cstr(ValoerDB)))
    			myConn.Execute strInsertDati2
    		End If
    		
    		myRSComS.Close
    		set myRSComS=nothing	
    		myConn.Close
    		set myConn=nothing
    
    	 	'valuto la lunghezza del valore e formo la cifra da visualizzare
    		If Len(Session("Counter"))=1 then
    			Contatore = "00000" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=2 then
    			Contatore = "0000" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=3 then
    			Contatore = "000" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=4 then
    			Contatore = "00" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=5 then
    			Contatore = "0" & Session("Counter") 
    		End if
    		If Len(Session("Counter"))=6 then
    			Contatore = Session("Counter") 
    		End if
        End if
       
       %>
    premetto inoltre che non funziona mi da errore di sintassi e che lo sviluppo si basa sul fatto che nella tabella vi sia già un record con id logico=1 e con campo di tipo numerico=1!

    in questo modo se la variabile di sessione è <>"" allora devoe solo riportare il suo contenuto a video altrimenti a variabile ="" controlla il valore dentro il campo e a seconda di questo valora incrementa o azzera il valore efettuando poi un update del campo stesso, update che non funziona...

    qualche suggerimento o soluzione?

    Grazie

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.