Autor Beitrag
Morpheus1572
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Fr 18.07.08 20:28 
ich komme nicht weiter. habe jetzt sicher schon 30 versuche und mittlerweile weiß ich nicht mal mehr ob überhaupt was richtig ist.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
procedure TForm5.FormShow(Sender: TObject);
var
  ds: TDataSet;
  AGNr: String;
begin
{ Hier muss ich nun klären ob in AG bereits etwas eingetragen ist. Wenn ja
  dann muss ich die AG-Nr auslesen und diese im Edit1-Feld anzeigen.
  Gleichzeitig muss ich das Feld vor Zugriff schützen, damit niemand mehr den
  Eintrag ändern kann. Das mache ich alles in der PROCEDURE FillFields!
}

  ShowMessage('AG-Zähler: ' + AGZaehler);
  if AGZaehler = '1' then
    begin
      // FillFields;
      Edit1.Enabled := false;
      Button1.Enabled := true;
      ADOQuery1.Active:=false;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Text :=
        'SELECT AG-Nr FROM AG WHERE AG-ID = :apptype';
      ADOQuery1.Prepared := true;
      ADOQuery1.Parameters.ParamByName('apptype').Value:=AGZaehler;
      ADOQuery1.Active := true;
//      ds := DataSource1.DataSet;
//      ShowMessage(ds);
//      Edit1.Text := ds['AG-Nr'];
    end
end;


ich bekomme die meldung:

'für mindestens einen erforderlichen parameter wurde kein wert angegeben.'

wo hakt es jetzt wieder bei mir? in anderen progs klappt es. ich bin mir nicht mehr sicher was hier passiert.

Thx für eure Unterstützung.

Morph.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Fr 18.07.08 21:34 
Prepare ist doch sowas wie ein Test ob die Query geht, wenn ich mich nicht irre.

verschiebe die Zeile:
ausblenden Delphi-Quelltext
1:
      ADOQuery1.Prepared := true;					

mal hinter die Zuweisung des Parameterwertes.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Fr 18.07.08 21:42 
Hi,

hat leider keine auswirkung. ist der selbe fehler.
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Fr 18.07.08 22:04 
Dann versuch es mal so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
...
      ADOQuery1.Active:=false;
      //ADOQuery1.SQL.Clear; <-- ist überflüssig bei zuweisung an text
      ADOQuery1.SQL.Text :=
        'SELECT AG-Nr FROM AG WHERE AG-ID = :apptype';
      ADOQuery1.Prepared := true;
      ADOQuery1.Parameters.ParamByName('apptype').AsString:=AGZaehler;
      ADOQuery1.Active := true;
...

oder so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
...
      ADOQuery1.Active:=false;
      //ADOQuery1.SQL.Clear; <-- ist überflüssig bei zuweisung an text
      ADOQuery1.SQL.Text :=
        'SELECT AG-Nr FROM AG WHERE AG-ID = '+QuotedStr(AGZaehler);
      ADOQuery1.Prepared := true;
      ADOQuery1.Active := true;
...

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Fr 18.07.08 22:19 
Hi Sinspin,

dein erster vorschlag geht nicht, da ich bei eingabe von '.' keine auswahl für AsString erhalte (weil AGZaehler bei mir als String deklariert ist?)

die 2te Variante bringt mir eine andere Fehlermeldung:

ParameterAG hat keinen Standartwert.

...
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Sa 19.07.08 09:07 
Moin,

des Rätzels Lösung und so simpel wie blödsinnig zugleich. Microschrott eben... :roll:

In diesem Fall ist es ein GROßER FEHLER, die Feldnamen der Tabelle mit Bindestrichen zu versehen. Das mag Access gar nicht. In diesem Sinne wünsche ich allen ein schönes WE.

Morph.
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Sa 19.07.08 11:05 
user profile iconMorpheus1572 hat folgendes geschrieben:
es Rätzels Lösung und so simpel wie blödsinnig zugleich. Microschrott eben... :roll:
Hach, das man alles immer auf MS schiebt, ist schon bezeichnend: Erstmal das Hirn einschalten, bevor man den Fehler woanders sucht (auch wenns Wochenende ist).
Wo ist denn der Unterschied zwischen der Variablen/Spaltennamen 'XY-Z' und dem Term (Subtraktion zweier Spalten) 'XY-Z'? Wie soll ein Parser das wissen? SQL ist so gnädig und erlaubt uns trotzdem, Leer- und Sonderzeichen in Spaltennamen zu verwenden, nur muss man sie dann entsprechend 'escapen', hier wäre das die Umschließung mit '[]'.

Um nun doch ein wenig auf Microsoft bzw. eher der Access-Abteilung rumzuhaken: Ob das mit Access geht, weiss ich nicht, weil der Access'sche SQL-Dialekt schon sehr eigene Wege geht. So wie MySQL z.B.

_________________
Na denn, dann. Bis dann, denn.
Agawain
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 460

win xp
D5, MySQL, devxpress
BeitragVerfasst: Sa 19.07.08 11:59 
Hi

Bindestriche. Leerzeichen usw. sind wirklich pfui für Spaltennamen.
Das Einzige, was ich mir da erlaube, ist der Unterstrich.

Das hat indirekt nur insoweit was mit Microschrott zu tun, als die Redmonder diese Möglichkeit erst eröffnet haben.
Excel und Access gehen mit diesen Features relativ großzügig um, kommen damit aber nicht unbedingt selbst mit klar.
Und das gilt für Fremdsoftware erst recht.

Gaaaanz schlechte Angewohnheit, Sonderzeichen irgendwo zu verwenden, sei es bei Dateibenennung, oder Feldnamen etc. alles was Steuerfunktion haben kann, da gehört sowas weg.

Selbst der Unterstrich ist kritisch zu beäugen ;-)
und überlange Dateinamen ebenfalls.

Gehört zwar nicht unbedingt zur Frage des Threaderstellers, aber Excel-Tabellen-Spalten-Überschriften mehrzeilig kommen auch immer gut, vor allem, wenn man Serienbrief macht :evil:

_________________
Gruß Aga
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Sa 19.07.08 13:20 
user profile iconAgawain hat folgendes geschrieben:
Das hat indirekt nur insoweit was mit Microschrott zu tun, als die Redmonder diese Möglichkeit erst eröffnet haben.
ANSI SQL definiert 'Quoted Identifiers', also nix Microsoft. Und Microschrott kenne ich gar nicht.

_________________
Na denn, dann. Bis dann, denn.
Morpheus1572 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Di 22.07.08 11:08 
Moin,

danke für die ausführlichen hinweise. die sind mir mittlerweile auch klar geworden. :D

@alzaimar: das mit den []-Klammern habe ich auch probiert. funzt aber genau so wenig. deswegen bin ich hier rein gekommen. ich versuche mich erst 1-2 tage an meinen Problemen bis ich hier poste. Aber hast recht Access hat wirklich einen sehr eigenen SQL-Dialekt. Bei JOIN-Abfragen zum Beispiel. hatte vor jahren schon mal das vergnügen und stehe demnächst wieder vor dem Problem die besonderheiten davon rauszufinden. :-)

Naja, es funzt und das ist wichtig. danke noch mal!!!


Gruß Morph.