Sayfayı Yazdır | Pencereyi Kapat

Başka Unitten diğer unite veri çekme

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1070
Tarih: 12 Temmuz 2025 Saat 19:35
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Başka Unitten diğer unite veri çekme
Mesajı Yazan: Sudesigirci
Konu: Başka Unitten diğer unite veri çekme
Mesaj Tarihi: 09 Temmuz 2025 Saat 12:24
Merhaba ana kodda oluşturduğum tablodan kullanıcı mail verisini talepler unitime çekmek istiyorum bu işlemi nasıl yapacağım yardımcı olur musunuz ? Teşekkür ederim.

-----ANA KOD------
var
loginform:TclStyleForm;
loginbtn,signupbtn;TClProButton;
emailedit,passwordedit:TclProEdit;
quotelabel:TClProLabel;
UnitRegister:TclUnit;
kullaniciTipi,kullaniciAdi: String;
void CreateTable;
{
  try
  {
    Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'musteri.db3', '');
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'CREATE TABLE IF NOT EXISTS Users (' +
      'UserID INTEGER PRIMARY KEY AUTOINCREMENT,' + 
      'Email TEXT NOT NULL UNIQUE,' + 
      'FirstName TEXT NOT NULL,' + 
      'LastName TEXT NOT NULL,' + 
      'Password TEXT NOT NULL,' + 
      'UserType TEXT NOT NULL '+')';
    Clomosy.DBSQLiteQuery.OpenOrExecute();
  }
  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
}

void CreateTaleplerTable;
{
  try
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'CREATE TABLE IF NOT EXISTS Talepler (' +
      'id INTEGER PRIMARY KEY AUTOINCREMENT,' +
      'kullanici_email TEXT NOT NULL,' +
      'baslik TEXT NOT NULL,' +
      'aciklama TEXT NOT NULL' +
      ')';

    Clomosy.DBSQLiteQuery.OpenOrExecute;
  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
}



void SignIn;
{
  try
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'SELECT UserType,FirstName FROM Users WHERE Email = ' + QuotedStr(emailedit.Text) + 
      ' AND Password = ' + QuotedStr(passwordedit.Text);

    Clomosy.DBSQLiteQuery.OpenOrExecute;

    if not Clomosy.DBSQLiteQuery.Eof {
      kullaniciTipi = Clomosy.DBSQLiteQuery.FieldByName('UserType').AsString;
      kullaniciAdi = Clomosy.DBSQLiteQuery.FieldByName('FirstName').AsString;
      ShowMessage('Hoş geldin, ' + kullaniciAdi);

      if (kullaniciTipi == 'Admin')
        Clomosy.RunUnit('UAdminHome');
      else if (kullaniciTipi == 'Kullanıcı')
        Clomosy.RunUnit('UUserPage');
    }
    else {
      ShowMessage('Giriş başarısız. Email ya da şifre hatalı.');
    }

    Clomosy.DBSQLiteQuery.Close;
    
  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
    Clomosy.DBSQLiteQuery.Close;
  }
}




void gotoRegister;
{
UnitRegister.UnitName='URegister';
UnitRegister.CallerForm=loginform;
UnitRegister.Run;
}


{
  loginform=TclStyleForm.Create(Self);
  loginform.SetFormBGImage(' https://i.imgur.com/qbg3hQN.png" rel="nofollow - https://i.imgur.com/qbg3hQN.png ');
  
  emailedit=loginform.AddNewProEdit(loginform, 'emailedit', 'Email: ');
  emailedit.Align=alTop;
  emailedit.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff')
  emailedit.Width=60;
  emailedit.Height=40;
  emailedit.Margins.Top=250;
  emailedit.Margins.Right=60;
  emailedit.Margins.Left=60;
  emailedit.clProSettings.RoundHeight=8;
  emailedit.clProSettings.RoundWidth=8;
  emailedit.clProSettings.TextSettings.Font.Size=10;
  emailedit.clProSettings.TextSettings.FontColor=clAlphaColor.clHexToColor('#e9e9e9');
  emailedit.SetclProSettings(emailedit.clProSettings);
  
  passwordedit=loginform.AddNewProEdit(loginform, 'passwordedit', 'Şifre: ');
  passwordedit.Align=alTop;
  passwordedit.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff')
  passwordedit.Width=60;
  passwordedit.Height=40;
  passwordedit.Margins.Top=50;
  passwordedit.Margins.Right=60;
  passwordedit.Margins.Left=60;
  passwordedit.Password=True;
  passwordedit.clProSettings.RoundHeight=8;
  passwordedit.clProSettings.RoundWidth=8;
  passwordedit.clProSettings.TextSettings.Font.Size=10;
  passwordedit.clProSettings.TextSettings.FontColor=clAlphaColor.clHexToColor('#e9e9e9');
  passwordedit.SetclProSettings(passwordedit.clProSettings);


  loginbtn=loginform.AddNewProButton(loginform, 'loginbtn', 'GİRİŞ YAP');
  loginbtn.Align=alCenter;
  loginbtn.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff');
  loginbtn.clProSettings.TextSettings.Font.Size=30;
  loginbtn.clProSettings.FontColor=clAlphaColor.clHexToColor('#e9e9e9');
  loginbtn.clProSettings.TextSettings.Font.Style=[fsBold];
  loginbtn.Height=30;
  loginbtn.Width=80;
  loginbtn.Margins.Bottom=100;
  loginbtn.Margins.Right=100;
  loginbtn.clProSettings.RoundHeight=8;
  loginbtn.clProSettings.RoundWidth=8;
  loginbtn.clProSettings.IsTransparent=True;
  loginbtn.clProSettings.FontVertAlign = palcenter;
  loginbtn.clProSettings.FontHorzAlign = palCenter;
  loginbtn.SetclProSettings(loginbtn.clProSettings);
  
  signupbtn=loginform.AddNewProButton(loginform, 'signupbtn', 'KAYIT OL');
  signupbtn.Align=alCenter;
  signupbtn.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff');
  signupbtn.clProSettings.TextSettings.Font.Size=30;
  signupbtn.clProSettings.FontColor=clAlphaColor.clHexToColor('#e9e9e9');
  signupbtn.clProSettings.TextSettings.Font.Style=[fsBold];
  signupbtn.Height=30;
  signupbtn.Width=80;
  signupbtn.Margins.Bottom=100;
  signupbtn.Margins.Left=100;
  signupbtn.clProSettings.RoundHeight=8;
  signupbtn.clProSettings.RoundWidth=8;
  signupbtn.clProSettings.IsTransparent=True;
  signupbtn.clProSettings.FontVertAlign = palcenter;
  signupbtn.clProSettings.FontHorzAlign = palCenter;
  signupbtn.SetclProSettings(signupbtn.clProSettings);
  
  
  quotelabel = loginform.AddNewProLabel(loginform,'quotelabel','"Müşteriyi dinleyen değil, anlayan sistem."');
  quotelabel.Align = alBottom;
  quotelabel.Margins.Bottom=20;
  quotelabel.Margins.Left=70;
  quotelabel.Margins.Right=50;
  quotelabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  quotelabel.clProSettings.FontSize =15;
  quotelabel.clProSettings.AutoSize = True;
  quotelabel.clProSettings.FontVertAlign = palcenter;
  quotelabel.clProSettings.FontHorzAlign = palLeading;
  quotelabel.clProSettings.TextSettings.Font.Style = [fsItalic];
  quotelabel.clProSettings.IsFill = True; 
  quotelabel.clProSettings.IsRound = True;
  quotelabel.SetclProSettings(quotelabel.clProSettings);
  
  CreateTable;
  UnitRegister=TclUnit.Create;
  loginform.AddNewEvent(signupbtn,tbeOnClick,'gotoRegister');
  loginform.AddNewEvent(loginbtn,tbeOnClick,'SignIn');
  loginform.Run;
}


-----URequest Uniti----------
var
talepForm:TclStyleForm;
baslikLbl,labeltest:TClProLabel;
requestpnl:TclProPanel;
baslikedit,aciklamaedit:TclProEdit;
eklebtn:TClProButton;

void TalepEkle;
{
 
  try {
    Clomosy.DBSQLiteQuery.SQL.Text =
      'INSERT INTO Talepler (kulanici_email,baslik, aciklama) VALUES (' +
     //kullanıcı maili 
     QuotedStr(aciklamaedit.Text) + ',' +
      QuotedStr(baslikedit.Text) + ',' +
      QuotedStr(kategoriCombo.Text) +')';
    Clomosy.DBSQLiteQuery.OpenOrExecute;
    ShowMessage('Talep başarıyla eklendi.');

    aciklamaedit.Text = '';
    baslikedit.Text='';
  }
  except {
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
}

{
  talepForm=TclStyleForm.Create(Self);
  talepForm.SetFormBGImage(' https://i.imgur.com/rQmEqR4.jpeg" rel="nofollow - https://i.imgur.com/rQmEqR4.jpeg ');
  
  baslikLbl = talepForm.AddNewProLabel(talepForm, 'baslikLbl', 'Talep Oluştur');
  baslikLbl.Align = alTop;
  baslikLbl.Margins.Top=10;
  baslikLbl.Height = 40;
  baslikLbl.clProSettings.FontSize = 30;
  baslikLbl.clProSettings.TextSettings.Font.Style = [fsBold];
  baslikLbl.clProSettings.FontHorzAlign = palCenter;
  baslikLbl.SetclProSettings(baslikLbl.clProSettings);
  
  requestpnl=talepForm.AddNewProPanel(talepForm, 'requestpnl');
  requestpnl.Align=alCenter;
  requestpnl.Height=350;
  requestpnl.Width=400;
  requestpnl.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff');
  requestpnl. clProSettings.BorderColor = clAlphaColor.clHexToColor('#fabd2');
  requestpnl.clProSettings.RoundWidth=8;
  requestpnl.clProSettings.RoundHeight=8;
  requestpnl.SetclProSettings(requestpnl.clProSettings);
  requestpnl.BringToFront;
  
  baslikedit=talepForm.AddNewProEdit(requestpnl, 'baslikedit', 'Talep Başlığı');
  baslikedit.Align=alTop;
  baslikedit.Height=40;
  baslikedit.Width=60;
  baslikedit.clProSettings.FontHorzAlign=palCenter;
  baslikedit.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#58d7f4');
  baslikedit.SetclProSettings(baslikedit.clProSettings);


  aciklamaedit=talepForm.AddNewProEdit(requestpnl,'aciklamaedit','Açıklama');
  aciklamaedit.Align=alTop;
  aciklamaedit.Margins.Top=10;
  aciklamaedit.Height=200;
  aciklamaedit.Width=250;
  aciklamaedit.clProSettings.FontVertAlign=palLeading;
  aciklamaedit.clProSettings.FontHorzAlign=palLeading;
  aciklamaedit.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#58d7f4');
  aciklamaedit.SetclProSettings(aciklamaedit.clProSettings);
  
  eklebtn=talepForm.AddNewProButton(requestpnl,'eklebtn','EKLE');
  eklebtn.Align=alBottom;
  eklebtn.Margins.Bottom=5;
  eklebtn.Height=40;
  eklebtn.Width=60;
  eklebtn.Margins.Right=60;
  eklebtn.Margins.Left=60;
  eklebtn.clProSettings.RoundHeight=8;
  eklebtn.clProSettings.RoundWidth=8;
  eklebtn.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#58d7f4');
  eklebtn.clProSettings.FontColor=clAlphaColor.clHexToColor('#ffffff');
  eklebtn.clProSettings.TextSettings.Font.Style=[fsBold];
  eklebtn.clProSettings.FontSize=20;
  eklebtn.SetclProSettings(eklebtn.clProSettings);


  
  talepForm.Run;
}



Cevaplar:
Mesajı Yazan: cerenn
Mesaj Tarihi: 09 Temmuz 2025 Saat 13:23
Merhaba sorunu doğru anladıysam bunu global değişkenle sağlayabilirsin.
https://www.docs.clomosy.com/index.php?title=Global_Variables" rel="nofollow - https://www.docs.clomosy.com/index.php?title=Global_Variables buradan inceleyebilirsin.
var 
aktifEmail: String;

void SignIn;
{
  try
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'SELECT UserType, FirstName, Email FROM Users WHERE Email = ' + QuotedStr(emailedit.Text) + 
      ' AND Password = ' + QuotedStr(passwordedit.Text);

    Clomosy.DBSQLiteQuery.OpenOrExecute;

    if not Clomosy.DBSQLiteQuery.Eof {
      kullaniciTipi = Clomosy.DBSQLiteQuery.FieldByName('UserType').AsString;
      kullaniciAdi = Clomosy.DBSQLiteQuery.FieldByName('FirstName').AsString;
      aktifEmail = Clomosy.DBSQLiteQuery.FieldByName('Email').AsString;
      
      // Global değişkene email'i kaydet
      Clomosy.GlobalVariableString = aktifEmail;
      
      ShowMessage('Hoş geldin, ' + kullaniciAdi);

      if (kullaniciTipi == 'Admin')
        Clomosy.RunUnit('UAdminHome');
      else if (kullaniciTipi == 'Kullanıcı')
        Clomosy.RunUnit('URequest');
    }
    else {
      ShowMessage('Giriş başarısız. Email ya da şifre hatalı.');
    }

    Clomosy.DBSQLiteQuery.Close;
    
  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
    Clomosy.DBSQLiteQuery.Close;
  }
}
Unit içinde:
void TalepEkle;
{
  var kullaniciEmail: String;
  
  try {
    // Global değişkenden email'i al
    kullaniciEmail = Clomosy.GlobalVariableString;
    
    if (kullaniciEmail != '') {
      Clomosy.DBSQLiteQuery.SQL.Text =
        'INSERT INTO Talepler (kullanici_email, baslik, aciklama) VALUES (' +
        QuotedStr(kullaniciEmail) + ',' +
        QuotedStr(baslikedit.Text) + ',' +
        QuotedStr(aciklamaedit.Text) + ')';
      Clomosy.DBSQLiteQuery.OpenOrExecute;
      ShowMessage('Talep başarıyla eklendi.');

      aciklamaedit.Text = '';
      baslikedit.Text = '';
    } else {
      ShowMessage('Kullanıcı girişi yapılmamış!');
    }
  }
  except {
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
}
kategoricombo daha tanımlamadığın için bu sekilde gösterdim.
Birde öneri olarak uygulaman tam olarak nasıl bilmiyorum ama uzun vadede foreign key kullanmak daha güvenli olacaktır.Sanırım her kullanıcı talep oluşturabiliyor.Bu durumda Users ve talepler tablosunu birbirine bağlarsın.Kullanıcı ID'si ile işlem yapılır,böylece email değişse bile talepler etkilenmez.İyi çalışmalar.



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net