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

    [Delphi6] ancora inserimento database

    Ciao a tutti,
    ho fatto una query
    codice:
    AQ1.SQL.Clear;   
    AQ1.SQL.Add('SELECT docenti.COGNOME, docenti.NOME, '+               
    'FROM docenti '+              
    'WHERE NOT(docenti.IdDocPk=1) ');   
    AQ1.Open;   
    AQ1.First;
    sto facendo l'inserimento di un nuovo docente all'interno del database e questo mi fa vedere chi è già dentro(per una eventuale DELETE). quando inserisco un nuovo nome e cognome, dovrei mettere anche le chiavi che corrispondono alla materia e alla classe in cui insegna.
    allora faccio:
    codice:
    AQ1.FieldByName('IdMatFk') .AsString:= numId_Materia;           AQ1.FieldByName('IdClaFk') .AsString:=numId_ClasseDoc;
    e mi da errore, dicendo che non riesce a trovate IdMatFk e anche IdClaFk.... ho provato a mettere anche nella select il campo connessione(che consente di fare un collegamento con materie, docenti e classi(e all'interno di esso ci sono tutte le chiavi esterne)) ma non mi conviene.... come posso fare?

  2. #2
    Apri il dataset:
    AQ1.SQL.Clear;
    AQ1.SQL.Add('SELECT docenti.COGNOME, docenti.NOME, '+
    'FROM docenti '+
    'WHERE NOT(docenti.IdDocPk=1) ');
    AQ1.Open;
    AQ1.First;
    poi fai le assegnazioni

    AQ1.FieldByName('IdMatFk') .AsString:= numId_Materia;
    AQ1.FieldByName('IdClaFk') .AsString:=numId_ClasseDoc;
    ma nella select i campi IdMatFk, IdClaFk non ci sono, non ti conviene mettere:
    codice:
    select * from docenti where NOT(docenti.IdDocPk=1)
    N.

  3. #3
    Il fatto è che sono chiavi esterne e si trovano in un'altra tabella!!!!!!!!!

  4. #4
    allora devi lanciare una query di update mirata sulla tabella qualcosa del tipo
    update <Tabella> set IdMatFk = xxx, IdClaFk = yyy where .....
    usando un adocommand
    N.

  5. #5
    non esiste un modo per nascondere le colonne delle chiavi esterne?
    ossia faccio una SELECT, nascondendo le colonne che non mi servono.... ahahha sembra strano

  6. #6
    Nascondere dove ??? nella grid??
    crei al volo solo le colonne che ti servono quando apri la tabella, oppure le crei fisse a visualtime
    N.

  7. #7
    ok, ti spiego.
    Risulta difficile fare una upgrade perchè è una tabella dove ci sono più informazioni dello stesso attributo.
    quindi con la where potrei mettere l'ID della connessione, ma anche quello bisogna passarlo....

  8. #8
    Ci capisco sempre meno... a questo punto devi scegliere o ti spieghi meglio di ciò che vuoi portando qualcosa di più serio, come facciamo a sapere che le chiavi sono in una tabella a parte, ti è stato chiesto di postare la struttura del DB,NON I DATI LA STRUTTURA , niente.. ti è stato chiesto di essere più specifico... bisogna toglierti le domande con il cavatappi...
    Detto ciò... o ci dai le varie informazioni oppure noi non possiamo essere veggenti, a quanto pare ti sei giocato l'aiuto di Marco (alka) tra i migliori programmatori Delphi in circolazione il quale sembrava abbastanza interessato, adesso sta a te decidere, io non so più cosa fare/dire.
    N

  9. #9
    Ecco qua la struttura del database!
    Come vedi le chiavi esterne sono tutte nella tabella connessione! e per salvare all'interno i dati dovri fare una slezione di questa. Ma nella DBGrid così, mi stampa tutti i docenti con le relative informazioni! e non mi sta bene
    Quindi io cercavo un modo per inserire i dati della materia e classe nell database!
    Immagini allegate Immagini allegate

  10. #10
    Pare un rebus.
    Allora tu hai un database costituito nella seguente maniera

    DOCENTI(IDDOCPK,NOME, COGNOME);
    CLASSI(IDCLAPK,CLASSE);
    CONNESSIONE(IDCONPK,IDDOCFK,IDCLAFK,IDMATFK);

    e devi inserire un nuovo docente con un eventuale controllo sulla sua esistenza, giusto?

    Fai una select su DOCENTI per vedere se esiste e nel caso lo aggiungi una una insert.
    Stessa cosa fai per la tabella CONNESSIONE.

    Non capisco dove sia la difficoltà..

    poi hai parlato di DBGrid, ma a questo punto che c'entra?
    P.S: se vuoi un consiglio non usare DBGrid ma le TSTringGRid...
    "Due cose riempiono l’animo di ammirazione e venerazione sempre nuova e crescente, quanto piú spesso e piú a lungo la riflessione si occupa di esse: il cielo stellato sopra di me, e la legge morale in me..." Immanuel Kant

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.