AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi primärschlüsselfeld definieren

primärschlüsselfeld definieren

Ein Thema von hyype · begonnen am 17. Nov 2008 · letzter Beitrag vom 17. Nov 2008
Antwort Antwort
hyype

Registriert seit: 5. Nov 2008
97 Beiträge
 
Delphi XE2 Professional
 
#1

primärschlüsselfeld definieren

  Alt 17. Nov 2008, 08:50
Datenbank: MSSQL • Zugriff über: ADO
hi Kollegen,

ich habe folgendes Problem:
Ich hole mir aus einer MS SQL DB Daten über eine ADOConnection und ein ADOQuery usw. und hau sie dann in ein CDS.
Das Problem ist, dass die Information, welche Spalte der Primärschlüssel ist, nicht ebenfalls der DB entnommen wird.
Ich brauche aber für die ApplyUpdates-Funktion des CDS diese Information.
Aber wie definier ich ein Feld als Primärschlüsselfeld (der Primärschlüssel ist bei der Tabelle nur eine Spalte, nix zusammengesetztes) und bei welchem Steuerelement mach ich das? Ich würd denken bei der ADOQuery, weils von da aus an die anderen Steuerelemente (also ans CDS) weitergegeben wird.
Ich versuche gerade, in der ADOQuery ein Feld zu erstellen, bevor die SQL-Anweisung ausgeführt wird, damit ich dem Feld den fieldkind-Wert fkLookup geben kann. Dann hab ich gedacht, kann ich's vielleicht mit keyfields zum Primärschlüsselfeld machen, aber kA, ob das so geht.
Schöner wäre es auf jeden Fall, wenn man die ADOQuery dazu bringen könnte, selber mal in der DB zu gucken, was der Primärschlüssel ist, das muss doch auch irgendwie gehen..
Bitte um Mithilfe ^^
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: primärschlüsselfeld definieren

  Alt 17. Nov 2008, 08:55
Das solltesst du in der DB anlegen
Markus Kinzler
  Mit Zitat antworten Zitat
hyype

Registriert seit: 5. Nov 2008
97 Beiträge
 
Delphi XE2 Professional
 
#3

Re: primärschlüsselfeld definieren

  Alt 17. Nov 2008, 09:10
Die Tabelle mit dem Primärschlüssel ist in der DB selbstverständlich als Primärschlüsseltabelle definiert, nur diese Information wird nicht aus der DB geholt...
Mein oben beschriebener Versuch führte jetzt zu diesem Ergebnis:
"Lookup-Information für Feld 'MYPE_NR' ist unvollständig"
MYPE_NR ist die Spalte mit dem Primärschlüssel.
Hier mal noch bissl Code:
Delphi-Quellcode:
var
  pkf:TIntegerfield;
begin
  pkf:=TIntegerfield.Create(datamodule3.adoquery1);
  pkf.FieldName:=tblname+'_NR';
  pkf.Lookup:=true; //setzt fieldkind auf fkLookup

.
.
.

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    adoquery1.Fields.Add(pkf);
    ADOQuery1.SQL.Add(sql_anweisung);
    ADOQuery1.Open;
P.S.:
kann auch gut sein, dass das, was ich versuche zu tun, nix mit dem zu tun hat, was ich machen will.. ^^
evtl haben lookup felder eine ganz andere funktion
wenn ich z.bsp. ein feld monatsgehalt, ein feld prämie und ein feld jahresgehalt habe und das jahresgehalt zur laufzeit berechnet wird (12*monatsgehalt + prämie), dass dann monatsgehalt und prämie lookup-felder sein müssen, das also nix mit dem primärschlüssel zu tun hat
  Mit Zitat antworten Zitat
hyype

Registriert seit: 5. Nov 2008
97 Beiträge
 
Delphi XE2 Professional
 
#4

Re: primärschlüsselfeld definieren

  Alt 17. Nov 2008, 10:00
ICH HABS!!!
adoquery1.FieldByName(tblname+'_NR').ProviderFlags :=[pfInKey];
Diese Zeile besagt, dass wenn DSP.UpdateMode auf upWhereKeyOnly gesetzt ist, er die Felder mit dem ProviederFlag pfinKey benutzt, um den zu ändernden Datensatz in der DB zu erkennen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz