Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [Delphi] Aggiornamento di massa record

    Salve! Eccomi qui con una fantastica domanda sui database. Se volete... potete cercare "i miei precedenti"

    La domanda di oggi riguarda una connessione ADO con un database Access.
    Avrei l'esigenza di editare da codice il valore di un campo un tot di record ricavati con una query.

    Per la precisione "rinumerare" questi record di 10 in 10.
    Cosa mi consigliate di fare?
    Stefano

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Se riesci con una query SQL e un componente ADOQuery, bene, altrimenti ti tocca scorrerli uno per uno, applicare le modifiche necessarie e salvarlo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Al..Alka? Chi sei tu? Non hai mai risposto ai miei thread !

    Ecco il problema è qui... seguimi solo un attimo.
    Premesso che la connessione db è esistente e assegnata alla Query, che la Query2 è funzionante e il campo ID esiste, che k è una variabile integer:

    codice:
    Query.SQLText := 'SELECT numerazione FROM fasi WHERE idprocesso = '+ Query2.FieldByName('id').AsString;
    Query.Open;
    Query.Edit;
    do while not Query.Eof
    begin
     Inc(k);
     Query['numerazione'] := k * 10;
    end;
    Non funziona... dice che le "informazioni sulla colonna chiave sono insufficienti o errate"
    Stefano

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Come mai non usi la notazione seguente?
    codice:
    Query.FieldByName('NOMECAMPO').AsInteger := MyIntegerValue;
    P.S.: devi andare in Edit all'interno del ciclo e spostarti con un Next.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Sì scusami... ho invertito tutto e dimenticato quello. Nel codice del programma però è come hai detto tu che pirlons che sono.

    Ora lo provo. Ma mi restituiva quell'errore..
    Stefano

  6. #6
    "Informazioni sulla colonna chiave insufficienti o errate. Troppe righe interessate dall'aggiornamento"

    codice:
    procedure TfPrincipale.btnFasiRiordinaClick(Sender: TObject);
     var qN: TADOQuery; k: integer;
    begin
     qN := TADOQuery.Create(nil);
     qN.Connection := fDati.DB;
     qN.SQL.Text := 'SELECT numerazione FROM fasi WHERE idprocesso = '+ fDati.ProcessiTabella.FieldByName('id').AsString;
     qN.Open;
     while not qN.Eof do
     begin
      qN.Edit;
      Inc(k);
      qN.FieldByName('numerazione').AsInteger := k * 10;
      qN.Next;
     end;
     qN.Destroy;
    end;
    Ho risolto così:

    codice:
     var qN, qR: TADOQuery; k: integer;
    begin
     qN := TADOQuery.Create(nil);
     qR := TADOQuery.Create(nil);
     qN.Connection := fDati.DB;
     qR.Connection := fDati.DB;
     qN.SQL.Text := 'SELECT id FROM fasi WHERE idprocesso = '+ fDati.ProcessiTabella.FieldByName('id').AsString;
     qN.Open;
     while not qN.Eof do
     begin
      qN.Edit;
      Inc(k);
      qR.SQL.Clear;
      qR.SQL.Add('UPDATE fasi SET numerazione = '+ IntToStr(k * 10) +' WHERE id = '+ qN.FieldByName('id').AsString);
      qR.ExecSQL;
      qN.Next;
     end;
     qN.Destroy;
     qR.Destroy;
    Stefano

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.