Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 18 su 18
  1. #11
    Originariamente inviato da DvdDelphi
    ok è vero.... però ormai dovresti essere abituato (scherzo ovviamente)
    allora io ho tre tabelle nel database, partendo da sinistra ho la classe collegata con gli studenti collegata con il registro(voti).

    adesso dovrei fare la cancellazione del nome dello studente. Quindi quando cancello devo cancellare la chiave esterna della classe(non dovrebbe essere un problema perchè si trova nella tabella studenti) e la chiave esterna degli studenti e i relativi voti nella tabella registro.

    spero che sono stato chiaro!!!
    Già che ci siamo direi anche di fare un po' di chiarezza su queste tabelle ... potresti postare le strutture.

    Io personalmete visto che il tutto non è tanto complesso userei 3 ADOTABLE collegate tra di loro con i relativi DataSource in modalità Master/Detail in questo modo la cancellazione dei record è a carico di delphi (spero di non aver detto una cavolata, ma mi sembra di averlo letto, e anche di aver provato ma non ricordo).
    N.

  2. #12
    Non posso postare il database, mi dispiace!

  3. #13
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da DvdDelphi
    io ho messo

    ADOCommand1.CommandText:= ('DELETE FROM registro '+
    'WHERE registro.IdStuFK='+NumId_Studente+' ');
    ADOCommand1.Execute;
    L'hai messo dove? come? e perché?
    Continui a omettere informazioni essenziali alla risoluzione del problema.

    I tuoi messaggi sono brevissimi, striminziti, privi di informazioni, mentre quelli di coloro che ti rispondono (senza peraltro comprendere ciò che chiedi) sono ben più lunghi, mentre dovrebbe essere il contrario.

    Originariamente inviato da DvdDelphi
    Non posso postare il database, mi dispiace!
    Ti si chiede la struttura, cioè sapere come è fatto il database!
    Non puoi dire qual è la struttura delle tabelle e le relazioni? E' un segreto di stato?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #14
    allora io ho tre tabelle nel database, partendo da sinistra ho la classe collegata con gli studenti collegata con il registro(voti).
    sono tutti uno a molti partendo da sinistra verso destra.
    Perchè in una classe ci possono essere più studenti e uno studente può avere più voti.

    poi
    L'hai messo dove? come? e perché?
    ecco il codice, rende di più l'idea lui che io xD
    codice:
    procedure TForm3.AQ1BeforePost(DataSet: TDataSet); 
    begin 
    if (AQ1.FieldByName('NOME').AsString='') OR (AQ1.FieldByName('COGNOME').AsString='') then     begin       
    showmessage('Inserire Valori mancanti: Nome o Cognome');       
    abort;       
    exit;     
    end   
    else     
    begin       
    if AQ1.State IN [dsInsert,dsedit] then         
    AQ1.FieldByName('IdClaFk') .AsString:=numId_Classe       
    else         
    begin           
    NumId_Studente:= AQ1.FieldByName('IdStuPk').AsString; 
    
    ADOCommand1.CommandText:= ('DELETE FROM registro '+
    'WHERE registro.IdStuFK='+NumId_Studente+' ');           
    ADOCommand1.Execute;            
    ADOCommand1.CommandText:= ('DELETE FROM Studenti '+  
    'WHERE studenti.IdStuPK='+NumId_Studente+' ');
    ADOCommand1.Execute;         
    end;     
    end; 
    end;

  5. #15
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,487
    Originariamente inviato da DvdDelphi
    sono tutti uno a molti partendo da sinistra verso destra.
    Il problema è sapere "cosa" è uno a molti.

    Originariamente inviato da DvdDelphi
    ecco il codice, rende di più l'idea lui che io xD
    Non chiedo neanche perché nell'evento OnBeforePost, che Delphi esegue quando salva un record (in questo caso il record dello studente), tu stia eliminando i voti dello stesso studente, e anche lo studente stesso.

    Il codice che hai scritto è completamente sbagliato ed è assolutamente privo un senso.

    Come ho già detto altrove, ribadisco anche qui che io rinuncio perché questo sistema di affrontare e risolvere i problemi è intollerabile.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #16
    Non chiedo neanche perché nell'evento OnBeforePost, che Delphi esegue quando salva un record (in questo caso il record dello studente), tu stai eliminando i voti dello stesso studente, e anche lo studente stesso.
    si io devo eliminare lo studente.... con i relativi voti!!! quindi dopo la cancellazione non ci deve essere più all'interno del database!

  7. #17
    Indentiamo il codice ...



    codice:
      if AQ1.State IN [dsInsert,dsedit] then  
        AQ1.FieldByName('IdClaFk') .AsString:=numId_Classe 
      else
      begin
         NumId_Studente:= AQ1.FieldByName('IdStuPk').AsString; 
         ADOCommand1.CommandText:= <CUT DELETE>          
         ADOCommand1.Execute;  
         ADOCommand1.CommandText:= <CUT DELETE> 
         ADOCommand1.Execute;
       end;
    Sei in BeforePost, ossia un momento prima che il tuo record venga buttato nel DB come pensi sia lo stato ??? detto questo, il codice nella clausula else non verrà mai eseguito, non solo ... ma ad ogni modifica andrai a sovrascrivere il campo IdClaFk
    N.

  8. #18
    è vero,
    ma nel beforeDelete mi elimina il record, ma mi da errore dicendo che non riesce a trovare la riga specifica per fare l'aggionamento!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.