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

    Spostare records tra tabelle diverse

    Ciao.

    Devo far passare, in automatico e tramite asp, una serie di records da una prima tabella ad una seconda tabella di due diversi dbase access.

    Prima di eseguire questo spostamento devo, però, verificare che almeno due dei campi dei singoli records della prima tabella contengano un valore vero.

    Con l'aiuto della ricerca sono riuscito a mettere insieme questo code che in effetti "sposta" i dati dalla prima alla seconda tabella ed esegue anche il controllo sui due campi, diciamo obbligatori, e quando, in un determinato records manca almeno uno dei campi obbligatori non lo "sposta" nella seconda tabella.

    Il problema è che se almeno un record della prima tabella è incoerente lo spostamento si deve bloccare e l'utente va avvisato... questo non riesco a farlo funzionare, ecco il code:
    codice:
    Dim Error 
    
    Do Until strRec.Eof 
    
    If strRec("campo_txt") > "" and IsNumeric(strRec("campo_nmr")) Then
    Error = true
    
    If Error = true then
       
    'esegue la query insert into
    SQL = ........
    
    'altrimenti
    else
    
    Error = false
      
    end if 
    
    strRec.MoveNext
    Loop 
    
    if Error = false then  
    response.write "la query non è stata eseguita"
    end if
    Grazie.

  2. #2
    Io inserirei un brak quando imposti in false il codice di errore, così ti esce dal ciclo do..until e ti verifica subito il messaggio di errore:

    codice:
    Dim Error
    Do Until strRec.Eof
    	if strRec("campo_txt") > "" and IsNumeric(strRec("campo_nmr")) Then 
    		Error = true
    	end if
    	If Error = true then
    		'esegue la query insert into
    		SQL = ........
    	'altrimenti
    	else
    		Error = false
    		break
    	end if
    	strRec.MoveNext
    Loop
    if Error = false then
    	response.write "la query non è stata eseguita"
    end if
    Spero di essere stato di aiuto
    Lele
    Emanuele Boccaletti
    _____________________________________
    www.i23.eu
    emanuele@i23.eu

  3. #3
    Originariamente inviato da manubox98
    Spero di essere stato di aiuto
    Lele
    D'aiuto???
    Sei stato risolutivo !!!! funziona come un orologio svizzero!!!

    Un'altra domanda:
    come posso fare affinchè la segnalazione d'errore indichi anche sul quale dei due campi esiste l'errore????

    Grazie ancora.

  4. #4
    Per quello devi riconoscere quale dei due campi genera errore, quindi dividere il controllo IF:

    codice:
    if strRec("campo_txt") > "" Then
    	if IsNumeric(strRec("campo_nmr")) Then
    		Error = true
    	else
    		ErrorFiled = "campo_nmr"
    	end if
    else
    	ErrorFiled = "campo_txt"
    end if
    ed il codice di ritorno dell'errore:
    codice:
    if Error = false then
    	response.write "la query non è stata eseguita per un errore nel campo: " & ErrorField
    end if
    Io lo risolverei così..

    Addirittura scriverei il codice completo così:

    codice:
    Dim Error, ErrorField
    Do Until strRec.Eof
    	if strRec("campo_txt") > "" Then
    		if IsNumeric(strRec("campo_nmr")) Then
    			Error = true
    		else
    			ErrorFiled = "campo_nmr"
    		end if
    	else
    		ErrorFiled = "campo_txt"
    	end if
    
    	If Error = true then
    		'esegue la query insert into
    		SQL = ........
    	'altrimenti
    	else
    		response.write "la query non è stata eseguita per un errore nel campo: " & ErrorField
    		break
    	end if
    	strRec.MoveNext
    Loop
    ma va bene anche come l'hai messa tu!

    Lele
    Emanuele Boccaletti
    _____________________________________
    www.i23.eu
    emanuele@i23.eu

  5. #5
    Grazie per il suggerimento.

    Ho riscritto il code come da tua indicazione ma succede una cosa strana... infatti nello "spostamento" da una tbl all'altra, quando i records sono corretti, vengono scritti sulla seconda tbl per due volte, come duplicati...

    quando invece almeno uno dei records è inesatto il blocco funziona... :master:

  6. #6
    allora prova a scrivere il codice diviso come avevi fatto tu, facendo un controllo finale sull'errore:

    codice:
    if Error = false then
    	response.write "la query non è stata eseguita per un errore nel campo: " & ErrorField
    end if
    Lele
    Emanuele Boccaletti
    _____________________________________
    www.i23.eu
    emanuele@i23.eu

  7. #7
    Modifico così, ma non cambia nulla :
    codice:
    Dim Error, ErrorField
    
    Do Until strRec.Eof 
    
    If strRec("campo_txt") > "" then
    If IsNumeric(strRec("campo_nmr")) Then
    
    Error = true
    
    else
    
    ErrorField = "campo_nmr"
    end if
    else
    
    ErrorField = "campo_txt"
    end if
    
    If Error = true then
       
    'esegue la query insert into
    SQL = ........
    
    'altrimenti
    else
    
    Error = false
      
    end if 
    
    strRec.MoveNext
    Loop 
    
    if Error = false then  
    response.write "la query non è stata eseguita" & ErrorField
    end if

  8. #8
    SCUSA!!!!!

    Mi sono dimenticato di impostare a FALSE il valore di ERROR!!!!!

    Eccoti il codice giusto!

    codice:
    Dim Error, ErrorField
    Do Until strRec.Eof
    	Error = false
    	if strRec("campo_txt") > "" Then
    		if IsNumeric(strRec("campo_nmr")) Then
    			Error = true
    		else
    			ErrorFiled = "campo_nmr"		
    		end if
    	else
    		ErrorFiled = "campo_txt"
    	end if
    
    	If Error = true then
    		'esegue la query insert into
    		SQL = ........
    	'altrimenti
    	else
    		response.write "la query non è stata eseguita per un errore nel campo: " & ErrorField
    		break
    	end if
    	strRec.MoveNext
    Loop
    Scusa ancora!

    Lele
    Emanuele Boccaletti
    _____________________________________
    www.i23.eu
    emanuele@i23.eu

  9. #9
    Non è necessario scusarsi... anzi... scrivo così ed adesso anche per i records coerenti mi blocca lo spostamento e mi stampa il response wrtie per quante volte sono i records della tbl da spostare...
    codice:
    Do Until Rs.Eof 
    
    If Rs("campo_nmr") <> "" then 
    If ISNUMERIC(Rs("campo_txt")) Then
    
    Error = true
    
    else
    			ErrorField = "campo_nmr"
    			Error = false
    			end if
    	else
    		ErrorField = "campo_txt"
    		Error = false
    		end if
    
    If Error = true then
    		'esegue la query insert into
    		SQL = ........
    	'altrimenti
    	else
    		response.write "la query non è stata eseguita per un errore nel campo: " & ErrorField
    		break
    	end if
    	strRec.MoveNext
    Loop

  10. #10

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.