Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [SQL SERVER] Update....

    Secondo voi cosa sbaglio in questo update ?

    codice:
    praticatemp = 0
    pratica = request.form("pratica")
    
    	set objcon = server.CreateObject("ADODB.Connection")
    	objcon.open(MM_con_rimorinservice_STRING)
    	dim qry
    	
    	qry = "begin transaction" & vbcrlf
    	qry = qry & " UPDATE dbo.DOC_DETT "
    	qry = qry & " SET DONUMDOC = " + replace(pratica,"'","''") + " " & vbcrlf
    	qry = qry & " WHERE DONUMDOC = " + replace(praticatemp,"'","''") + " " & vbcrlf
    	qry = qry & "if @@error <> 0 begin rollback RETURN end" & vbcrlf
    	
    	qry = qry & "COMMIT TRANSACTION" & vbcrlf
    	on error resume next
        set objRs = objcon.Execute(qry)
    ho stampato a video la stringa e mi pare corretta.....

    Unico dubbio che mi viene è questo:
    se faccio una query del database passando come parametro "praticatemp" ottengo tanti record non uno solo.
    Ovvero nel mio database ci sono tantissimi record che hanno il valore 0 a praticatemp.
    Io vorrei con un update solo e in un colpo solo aggiornare tutti i campi e farli passare da 0 al valore di pratica che è letto con un request.form e pensavo questa fosse la sintassi corretta, ma non funziona......

    aiuto please

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Facciamo attenzione a separare le questioni...una cosa è il database (e le relative query) ed un'altra è il linguaggio (ASP ? non sono molto esperto) che utilizzi per fare la tua pagina

    Hai provato ad eseguire la query DIRETTAMENTE sul database (con SQL Management Studio o Enterprise Manager o..) per vedere se funziona ?

    Dopo essertela fatta stampare prova a copiartela in Management Studio ed a lanciarla. Se funziona NON è un problema del database

    Prova a scriverla per intero ed ad eseguirla:

    UPDATE dbo.DOC_DETT SET DONUMDOC = 23 WHERE DONUMDOC = 0

    I campi pratica e praticatemp sono numerici ? (perchè allora mettere quel replace dell'apice ?)
    Oppure sono stringhe ? (allora devi mettere gli apici anche ad inizio e fine del parametro)

  3. #3
    I campi sono numerici e quindi tolgo le stringhe.
    Ahimè non ho quei programmi per eseguire la query.....

    La mia domanda in generale è questa però:

    se io ho n record che hanno DONUMDOC = 0

    e lancio una update dove dico UPDATE dbo.DOC_DETT SET DONUMDOC = 23 WHERE DONUMDOC = 0

    come si comporta la query? ogni campo che trova con valore 0 lo sostituisce con 23 ? oppure devo numerare ogni record uno per uno ?

  4. #4
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Originariamente inviato da marcopaolo79

    come si comporta la query? ogni campo che trova con valore 0 lo sostituisce con 23 ?
    Si

  5. #5
    Ultima domanda e non rompo più...

    la mia tabella dbo.DOC_DETT ha 3 campi come chiave
    i campi sono DONUMDOC (che aggiorno)
    NUMERORIGA
    CODICECLIENTE

    io ho attualmente prima dell'update una situazione del genere:
    DONUMDOC = 0
    NUMERORIGA = 1
    CODICECLIENTE = 1

    DONUMDOC = 0
    NUMERORIGA = 2
    CODICECLIENTE = 1

    DONUMDOC = 0
    NUMERORIGA = 3
    CODICECLIENTE = 1

    e così via...... ovvero stesso numero documento , stesso codice cliente ma numeri riga diversi.

    Se io lancio una update del tipo precedente
    UPDATE dbo.DOC_DETT SET DONUMDOC = 23 WHERE DONUMDOC = 0

    lui in teoria mi aggiorna tutti i record e sostituisce 0 con 23? oppure siccome ci sono 3 chiavi e io ne aggiorno una sola non si può fare?
    Grazie e scusa

  6. #6
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Si può fare senza problemi, verrà aggiornata la sola prima colonna; ovviamente è cura tua non aggiornarlo ad un valore già presente e che quindi possa violare (unito agli altri due) l'unicità della chiave

  7. #7
    Ho questa stringa maledetta ed ho sostituito alle variabili i valori fissi come mi hai suggerito ma non c'è verso di fare questo update......
    Sulla tabella DOC_DETT ho 3 chiavi e voglio aggiornare solo DONUMDOC come ti ho detto,
    Sulla tabella DOC_MAST invece ho 2 chiavi e voglio solo aggiornarne una (DONUMDOC) più un'altro campo di tipo stringa.


    codice:
    set objcon = server.CreateObject("ADODB.Connection")
    	objcon.open(MM_con_rimorinservice_STRING)
    	dim qry, qry2
    	
    	qry = "begin transaction" & vbcrlf
    	qry = qry & " UPDATE dbo.DOC_DETT "
    	qry = qry & " SET DONUMDOC = 22 " & vbcrlf
    	qry = qry & " WHERE DONUMDOC = 0 " & vbcrlf
    	qry = qry & "if @@error <> 0 begin rollback RETURN end" & vbcrlf
    	
    	qry = qry & "COMMIT TRANSACTION" & vbcrlf
    	on error resume next
        set objRs = objcon.Execute(qry)
    	
    	qry2 = "begin transaction" & vbcrlf
    	qry2 = qry2 & " UPDATE dbo.DOC_MAST "
    	qry2 = qry2 & " SET DONUMDOC = 22 , DOSTATO = 'G' " & vbcrlf
    	qry2 = qry2 & " WHERE DONUMDOC = 0 AND DOSTATO = 'T' " & vbcrlf
    	qry2 = qry2 & "if @@error <> 0 begin rollback RETURN end" & vbcrlf
    	
    	qry = qry & "COMMIT TRANSACTION" & vbcrlf
    	on error resume next
        set objRs = objcon.Execute(qry2)
    Deve fare un errore proprio di concetto.......

  8. #8
    1. togli la ON ERROR, altrimenti non capirai MAI se ti ritorna un errore
    2. fatti stampare a video le stringhe sql e provale direttamente dentro MSSQL

  9. #9
    le faccio stampare e sembrano corrette inoltre metto anche quest'altro pezzo di codice

    codice:
    response.write(qry)
    response.write(qry2)
    	
    	if err = 0 Then	
    					objcon.close()
    	   				set objcon = nothing
    					response.write("update eseguito con successo")
    
    					else
    					response.Write("Errore in fase di aggiornamento dati errore numero " & err)
    					end if
    e mi dà sempre la frase errore in fase di aggiornamento.
    purtroppo non ho la possibilità di provare la stringa direttamente dentro al database....
    Cosa posso fare per capire l'errore??

  10. #10
    1. hai tolto la ON ERROR?
    2. perché non puoi provare le query dentro sql?
    3. posta le stampate

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.