Autor Beitrag
rushtone Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Do 22.02.07 19:37 
So also, den code werd ich die tage mal testen, obs geht..

aber ich hab grad noch ein anderes problem..

ich habe combobox3 da steht ja ein datum drin und ich hab noch ne combobox4 da steht auch ein datum drin..
und zwar:
combobox3=anfangs datum
combobox4=end datum

nun möchte ich die sql anweisung noch etwas ergänzen und zwar mit allen datensätzen die zwischen dem anfangs und dem enddatum liegen..
wie kann ich das in die sql anweisung einfügen?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
  form15.Query1.SQL.Text := 'UPDATE Einsätze.db SET Added = "Ja" ' +
                  'WHERE (Added = "Nein") AND ' +
                         '(Firma =:FIRMA) AND (Baustelle =:BAUST) BETWEEN (Datum =:DATUM ) AND (Datum =:DATUM2 )';


form15.Query1.ParamByNAme('FIRMA').AsString := form15.combobox1.text;
form15.Query1.ParamByName('BAUST').AsString := form15.combobox2.text;
form15.Query1.ParamByName('DATUM').AsDateTime :=Strtodate(form15.combobox3.text);
form15.Query1.ParamByName('DATUM2').AsDateTime :=Strtodate(form15.combobox4.text);
form15.Query1.ExecSQL;


so gehts schonmal nicht.. :(
da kommt dann ein fehler wegen dem between.. unzulässiger string oder so.

so und dann würde mich noch interessieren wie man dann die datensätze die mann da bekommt in eine andere tabelle einfügt..
in rechnungen.db in meinem falle.. (also alle datensätze die dann added 'ja' sind, die sollen in rechnungen.db übernommen werden..)
allerdings möchte ich nur 2 felder übernehmen Firma und Baustelle.


danke schonmal :)

Moderiert von user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt
rushtone Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: Sa 24.02.07 19:12 
weiß denn niemand wie das geht?
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.02.07 19:32 
die hilfe schreibt z.b. so etwas: "WHERE (Saledate BETWEEN "1/1/1988" AND "12/31/1988")" vielleicht solltest du dein sql statement mal überprüfen. ausserm liefert deine UPDATE anweisung keine rows zurück. aber ich geb dir mal 'n tipp, in der hilfe unter insert --> subselect gibts sicher 'n beispiel wie das geht.

noch 'n tipp: einfach mal in der hilfe nachschlagen :-)
rushtone Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38



BeitragVerfasst: So 25.02.07 00:01 
user profile iconGrenzgaenger hat folgendes geschrieben:
die hilfe schreibt z.b. so etwas: "WHERE (Saledate BETWEEN "1/1/1988" AND "12/31/1988")" vielleicht solltest du dein sql statement mal überprüfen. ausserm liefert deine UPDATE anweisung keine rows zurück. aber ich geb dir mal 'n tipp, in der hilfe unter insert --> subselect gibts sicher 'n beispiel wie das geht.

noch 'n tipp: einfach mal in der hilfe nachschlagen :-)


hab ich doch ohne ende sogar..

also ich habs jetzt zwar hinbekommen, aber ohne parameter. wobei ich lieber parameter verwenden würde..

funktioniert:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 form15.Query1.SQL.Text := 'UPDATE Einsätze.db SET Added = "Ja" ' +
                  'WHERE (Added = "Nein") AND ' +
                     '(Firma =:FIRMA) AND (Baustelle =:BAUST) AND Datum BETWEEN '+quotedstr(form15.combobox3.text)+' AND '+quotedstr(form15.combobox4.text)+' '; 
                       


form15.Query1.ParamByNAme('FIRMA').AsString := form15.combobox1.text;
form15.Query1.ParamByName('BAUST').AsString := form15.combobox2.text;
form15.Query1.ExecSQL;


aber hätte es lieber so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
 form15.Query1.SQL.Text := 'UPDATE Einsätze.db SET Added = "Ja" ' +
                  'WHERE (Added = "Nein") AND ' +
                         '(Firma =:FIRMA) AND (Baustelle =:BAUST) AND Datum BETWEEN "(Datum=:DATUM)" AND "(Datum=:DATUM2)"'; 
                     


form15.Query1.ParamByNAme('FIRMA').AsString := form15.combobox1.text;
form15.Query1.ParamByName('BAUST').AsString := form15.combobox2.text;
form15.Query1.ParamByName('DATUM').Asdate :=strtodate(form15.combobox3.text);
//form15.Query1.ParamByName('DATUM2').value :=strtodate(form15.combobox4.text);
form15.Query1.ExecSQL;


nur diese variante geht so leider nicht weil durch das " die parameter nicht mehr als solche erkannt werden..
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 25.02.07 01:15 
user profile iconraiguen hat folgendes geschrieben:
Genau das habe ich befürchtet (Kein Feld mit der Bezeichnung Ja) ;-) Delphi hätte hier aber beim Ausführen des Statements meckern müssen (...unbekanntes Feld Ja...) :gruebel:

delphi meckert nicht, bei 'n string, da es nicht weiss wie dieser zu interpretieren ist... daher kannste alles reinschreiben wozu du lust und laune hast...

user profile iconrushtone hat folgendes geschrieben:
also ich habs jetzt zwar hinbekommen, aber ohne parameter. wobei ich lieber parameter verwenden würde..funktioniert:
ausblenden Quelltext
1:
2:
3:
 form15.Query1.SQL.Text := 'UPDATE Einsätze.db SET Added = "Ja" ' +
                  'WHERE (Added = "Nein") AND ' +
                     '(Firma =:FIRMA) AND (Baustelle =:BAUST) AND Datum BETWEEN '+quotedstr(form15.combobox3.text)+' AND '+quotedstr(form15.combobox4.text)+' ';


dann schreib es doch so, dass es delphi interpretieren kann...
ausblenden SQL-Anweisung
1:
2:
3:
4:
5:
UPDATE Einsätze.db SET Added = "Ja" 
  WHERE (Added = "Nein"
    AND (Firma =:FIRMA) 
    AND (Baustelle =:BAUST) 
    AND Datum BETWEEN :d1 AND :d2;


Zuletzt bearbeitet von Grenzgaenger am So 25.02.07 01:22, insgesamt 2-mal bearbeitet
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 25.02.07 01:16 
.