Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: Delphide yazdığım kodlarla MySqldeki tabloma veri gönderme problemi  (Okunma sayısı 1417 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı void_main

  • Delphi 1 Level 4
  • ****
  • İleti: 34
  • Rep: +0/-0
Arkadaşlar Delphide bir program yazmalıyım bu program MySqldeki tablomun kolonlarına veri basmalı...
Bu iş için Forma bir Timer koydum içine şu kodları yazdım...

procedure TForm1.Timer1Timer(Sender: TObject);
var
a:Integer;
t:TDateTime;
begin
  a:= Random(100);
  t:= Now;
  begin
ZQuery1.SQL.Text := 'INSERT INTO ekleme (data, zaman) VALUES('+IntToStr(a)+', '+DateTimeToStr(t)+') ';
ZQuery1.Post;
ZQuery1.UpdateRecord;

ekleme : Mysql deki tablomun ismi
data, zaman : Tablodaki kolonların ismi

Yaptığım şey, a değişkeni tanımadım ve buna Random değer verdim bu sebeple Mysqldeki data kolonuna rastgele sayı üretecek...
t değişkeni ise zaman kolonunada sistemin tarih ve saatini basacak...
Sql kodumda hata olabilir büyük ihtimal verdiği hata :
Project Mysql_INSERT.exe raised exception class EZDatabaseError with message Incorrect token followed by  '':''
Bu bahsettiği iki nokta neyin nesi anlamadım. Başka bir kodlama ile çözebilen varsa yazabilirmi acaba, kolay gelsin...

Çevrimdışı void_main

  • Delphi 1 Level 4
  • ****
  • İleti: 34
  • Rep: +0/-0
Sanırım bahsettiği şey SQL kodum, iki noktadan sonra yanlış simge kullanılmış diyor, yanlış anlamadıysam

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.229
  • Rep: +55/-0
  • Cinsiyet: Bay
  • Falan filan ...
  • Delphi Sürümü: 2010 - XE2
zquery i bilmem ama şöyle bi dene

ZQuery1.SQL.Text := 'INSERT INTO ekleme (data, zaman) VALUES ('+IntToStr(a)+', '+DateTimeToStr(t)+') ';
ZQuery1.execsql;

ayrıca data alanın ve zaman alanın string tipte bi alan mı ?



Amatör Küme Programcı

Çevrimdışı void_main

  • Delphi 1 Level 4
  • ****
  • İleti: 34
  • Rep: +0/-0
ali aynı hatayı yine veriyor.
data--int,  zaman datetime tipinde

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.229
  • Rep: +55/-0
  • Cinsiyet: Bay
  • Falan filan ...
  • Delphi Sürümü: 2010 - XE2
ali aynı hatayı yine veriyor.
data--int,  zaman datetime tipinde

ZQuery1.SQL.Text := 'INSERT INTO ekleme (data, zaman) VALUES (:p, :p1)';
zquery1.parameters.parambyname('p').value := a;
zquery1.parameters.parambyname('p1').value := now;
ZQuery1.execsql;

olarak bi dene ayrıca ... Tarih formatı ile ilgili bi sorun olabilir..
senin pc nde DD.MM.YYYY olaraktır mysql se MM.DD.YYYY olarak alıyor olabilir ..



Amatör Küme Programcı

Çevrimdışı void_main

  • Delphi 1 Level 4
  • ****
  • İleti: 34
  • Rep: +0/-0
evet haklısın, kodlamada tarihi kaldırdım
ZQuery1.SQL.Text := 'INSERT INTO ekleme (data) VALUES ('+IntToStr(a)+') ';
sadece data kolonuna veri ekle dedim çalıştırdım Mysql'e döndüğümde sadece data kolonuna rastgele sayı bastı, zaman kolonunu boş getiriyor, onu kurcalamam lazım,
bir sorun olduğunda tekrar yazarım yada cevabı bulduğumda
teşekkürler...

Çevrimdışı void_main

  • Delphi 1 Level 4
  • ****
  • İleti: 34
  • Rep: +0/-0
tarih formatları uymadığı için bu hatayı veriyor. Parse işlemi yapmam lazım nasıl bilmiyorum ama yapınca yazacağım.

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.229
  • Rep: +55/-0
  • Cinsiyet: Bay
  • Falan filan ...
  • Delphi Sürümü: 2010 - XE2
mysql in tarih formatını bilmiyorum ama delphide formatlamak için

var
 s : string;
 begin
 s := formatdatetime('DD.MM.YYYY', NOW );

// dersek eğer GÜNGÜN . AYAY . YILYILYILYIL yani 07.03.2010 olarak döner...
s := formatdatetime('MM.DD.YYYY', NOW);
// dersek  03.07.2010 olarak veri dönüşü yapar ..

mysql in tarih formatına göre ayarlayıp sonra insert into sorgunda kullanabilirsin ..



Amatör Küme Programcı

Çevrimdışı aligel54

  • Delphi 2006 Level 4
  • ****
  • İleti: 481
  • Rep: +1/-0
MySQL in tarih formatı farklı olduğundan bu problem meydana geliyor.
benim çözümüm şu şekilde.

Projeme Mysql in istediği tarih formatına çeviren bir function yazdım.
Kod: [Seç]
Function DatetoSQLText(Tarih:Tdatetime):string;
var
  yil, ay, gun, saat, dakika, saniye, milisaniye:word;
begin
  DeCodeDate(Tarih, Yil, Ay, Gun);
  DecodeTime(Tarih, Saat, Dakika, Saniye, MiliSaniye);
  Result:=format('%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d',[Yil, Ay, Gun, Saat, Dakika, Saniye]);
end;
ve artık bundan sonra istediğin şekilde tarihi kullanabilirsin

Kod: [Seç]
ZQuery1.SQL.Text := 'INSERT INTO ekleme (data, zaman) VALUES('+IntToStr(a)+', '+DatetoSQLText(t)+') ';
« Son Düzenleme: 29 Nisan 2010 23:50:05 by Kocaturk »