AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MS-SQL Abfrageproblem
Thema durchsuchen
Ansicht
Themen-Optionen

MS-SQL Abfrageproblem

Ein Thema von emsländer · begonnen am 16. Jan 2007 · letzter Beitrag vom 17. Jan 2007
Antwort Antwort
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#1

MS-SQL Abfrageproblem

  Alt 16. Jan 2007, 23:34
Datenbank: MSSQL • Version: 2005 • Zugriff über: ADO
Moin,

folgendes Problem läßt mir nun noch mehr graue Haare wachsen:

Delphi-Quellcode:
  _query := TADOquery.Create(nil);
  with _query do begin
    try
      datasource := frmmain.DataSource1;
      with parameters.AddParameter do begin
 
        Name := 'xdauer';
        DataType := ftstring;
        Value := _dauer;

        Name := 'xtn';
        DataType := ftString;
        Value := _tn;
      end;
      connection := frmmain.ADOConnection1;

      sql.text := 'select count (*) as anzahl from tkanlage where (tn = :xtn) and (dauer = :xdauer)';
      open;
      _anz := FieldByName('Anzahl').AsInteger;
      close;
      showmessage(inttostr(_anz));
    finally
      //Free;
    end;
  end;
  freeandnil(_query);
Dem Datenbankinhalt nach MUSS _anz = 2 sein. (Ich habe die Quellen manuell doppelt hineinkopiert und auch validiert). Das Datenbankfeld tn ist Char(3) und dauer ist Char(acht). Wenn ich eine einzelne Abfrage auf tn mache, bekomme ich irgendwas um 420 angezeigt(passt auch), auf dauer bekomme ich 2 (auch ok). Mache ich aber die Kombi, gibts 0.

Kann mir mal jemand das Brett vom Kopf nehmen?

Achja, und um das ganze noch schwieriger zu machen, wenn das denn mal funktionieren sollte, muss noch auf datetime abgefragt werden, was im Moment auch allein gänzlich versagt:

Delphi-Quellcode:
Name := 'xdatum';
        DataType := ftdatetime;
        Value := stmp; // Bestehend aus Datum + ' ' + Uhrzeit (Format 22:11:00)
        // das Datenbankfeld dazu ist Datetime
Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: MS-SQL Abfrageproblem

  Alt 17. Jan 2007, 05:33
Die Datentypen sind definitv CHAR? Dann solltest du daran denken, dass deine Parameter auch tatsächlich die vorgegebene Länge haben müssen! CHAR hat immer die vorgegebene Länge, wird immer mit Leerzeichen aufgefüllt.

Wenn du variable String-Längen benutzen willst, dann solltest du VARCHAR verwenden.

Die nächste mögliche Falle sind NCHAR bzw. NVARCHAR für 16-Bit Zeichensätze...

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: MS-SQL Abfrageproblem

  Alt 17. Jan 2007, 05:37
Ersetzte mal den Asterix durch die Bezeichnung des PK
select count (<pk>) as anzahl from tkanlage where (tn = :xtn) and (dauer = :xdauer)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#4

Re: MS-SQL Abfrageproblem

  Alt 17. Jan 2007, 07:56
Zitat von mikhal:
Die Datentypen sind definitv CHAR? Dann solltest du daran denken, dass deine Parameter auch tatsächlich die vorgegebene Länge haben müssen! CHAR hat immer die vorgegebene Länge, wird immer mit Leerzeichen aufgefüllt.

Wenn du variable String-Längen benutzen willst, dann solltest du VARCHAR verwenden.

Die nächste mögliche Falle sind NCHAR bzw. NVARCHAR für 16-Bit Zeichensätze...

Grüße
Mikhal
werde ich tun


Danke


Gruß

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#5

Re: MS-SQL Abfrageproblem

  Alt 17. Jan 2007, 07:57
Zitat von mkinzler:
Ersetzte mal den Asterix durch die Bezeichnung des PK
select count (<pk>) as anzahl from tkanlage where (tn = :xtn) and (dauer = :xdauer)
Was bedeutet der "PK" ?


Gruß

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: MS-SQL Abfrageproblem

  Alt 17. Jan 2007, 07:59
Zitat:
Was bedeutet der "PK" ?
Primary Key = Primärschlüssel
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#7

Re: MS-SQL Abfrageproblem

  Alt 17. Jan 2007, 08:42
Zitat von mkinzler:
Zitat:
Was bedeutet der "PK" ?
Primary Key = Primärschlüssel



Gruß

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:24 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