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

    [C++]Append di un Dataset(C++Builder6)

    Ciao a tutti...
    Sarò una rottura di scatole con i miei messaggi,ma non so proprio dove andare a sbattere la testa.
    Sostanzialmente sono sempre nello stesso punto da un pezzo. Il programma compila correttamente
    ma in prossimita dell'append mi da errore ovvero:

    -- Errore in prossimità della Clausula where

    Potete analizzare questa sequenza di codice e mi dite che cosa nn va!!!!
    Senza peli sulla lingua.
    ************************************************** *****
    codice:
    //Verifico che sono nel campo della cxGrid che mi interessa
    
    if (DMDomini->tScadenze->FieldByName("Pagato")->AsBoolean==false)
            {
               
                //DialogBox
    
                int Conferma=MessageDlg("Vuoi aggiornare data scadenza e durata?!",
                   mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0);
                if (Conferma==mrYes)
                 {
                   //Abilito l'editing del dataset che è nel DataModule(DMDomini)
                   DMDomini->tScadenze->Edit();
                   DMDomini->tScadenze->FieldByName("Pagato")->AsBoolean=true;
                   //Dubbi...
                   aggiorna=DMDomini->tScadenze->FieldByName("DataScadenza")->AsString;
                   aggiorna_data=IncMonth(aggiorna,12);
    
                 }
             }
    else
             {
                   DMDomini->tScadenze->Edit();
                   DMDomini->tScadenze->FieldByName("Pagato")->AsBoolean=false;
                   
                   DMDomini->Comando->CommandText="INSERT INTO ScadenzaDomini (DataScadenza) 
                                                   VALUES " +aggiorna_data+"
                                                   WHERE                                                IDDominio="+DMDomini->tDomini->FieldByName("IDDominio")->AsString;
                   DMDomini->Comando->Execute();
                   
                   //Non Mi esegue l'inserimento nel dataset, ma da errori sul Where
                   DMDomini->tScadenze->Append();
                   delete DMDomini->Comando;
             }
    ************************************************** *******
    Sicuramente ci sono una barca di errori e sicuramente stanno sopravvalutando
    le mie capacità di programmazione...
    Comunque spero che qualcuno trovi una soluzione per aiutarmi.
    Grazie a chiunque risponda.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Sì, in effetti dal tuo pezzo di codice sembra che tu stia andando un pochino a caso.

    Prima chiami il metodo Edit ponendo un DataSet in modifica, cambi il valore di un campo, poi fai tutta un'altra query (di inserimento) su un altro DataSet per tentare poi di mettere il DataSet precedente in stato di inserimento con Append.

    In sostanza, si incrociano sia problemi legati alla dubbia logica del codice con l'esecuzione di operazioni probabilmente non connesse tra loro farcite con un errato uso dei metodi di modifica e inserimento dei record.

    Temo che tu debba imparare a camminare prima di correre...

    ...o almeno leggi la documentazione in linea.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3

    Fatto

    Hai perfettamente ragione...
    Cmq devo impaare in fretta perche altrimenti perdo il posto di lavoro...
    Proprio per questo chiedo aiuto a voi.
    Cmq la guida in linea la leggo, difatti ho sistemato in problema cosi:
    codice:
    void __fastcall TDettaglioDomini::cxGrid1DBTableView1MouseUp(
          TObject *Sender, TMouseButton Button, TShiftState Shift, int X,
          int Y)
    {
      TDateTime aggiorna_data;
    
    //Azione impostata sul solo campo di interesse
    
      aggiorna_data=IncMonth(DMDomini->tScadenze->FieldByName("DataScadenza")->
                                                  AsDateTime,12);
    
    if (((TcxGridDBColumn*)cxGrid1DBTableView1->Controller->FocusedColumn)->
                                                DataBinding->FieldName=="Pagato")
     {
      if (DMDomini->tScadenze->FieldByName("Pagato")->AsBoolean==true)
       {
        int Conferma=MessageDlg("Vuoi aggiornare il campo Pagato?!",
        mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0);
         if (Conferma==mrYes)
          {
           DMDomini->tScadenze->Edit();
           DMDomini->tScadenze->FieldByName("Pagato")->AsBoolean=false;
          }
       }else
          {
           int Conferma=MessageDlg("Se modifichi il campo, modificherai anche 
                                    la DataScadenza!!!Vuoi Procedere?!",
               mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0);
            if (Conferma==mrYes)
            {
              DMDomini->tScadenze->FieldByName("Pagato")->AsBoolean=true;
              DMDomini->tScadenze->Append();
              DMDomini->tScadenze->FieldByName("DataScadenza")->AsDateTime=aggiorna_data;
              DMDomini->tScadenze->Post();
            }
          }
      }
    }
    Adesso funziona tutto...
    Grazie comunque.


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