Yorumları: 8
Konuları: 1
Kayıt Tarihi: 15-04-2020
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4 Başlangıç
23-04-2020, Saat: 15:13
(Son Düzenleme: 23-04-2020, Saat: 17:32, Düzenleyen: Fesih ARSLAN.)
procedure Tfrm_Main.prLoad_kullanıcı_listesi(eposta, ad, yetki_duzeyi, firma_id, durum:string);
var
pQry: TADOQuery;
ListItem, yeni2 :TListItem;
Group: TListGroup;
I:integer;
firma_unvanı, where: string;
begin
try
pQry := TADOQuery.Create(nil);
lst_kullanici_islemleri.Items.BeginUpdate;
lst_kullanici_islemleri.Items.Clear;
I := 1;
lst_kullanici_islemleri.GroupView := true;
pQry.Connection := ADO_13;
pQry.SQL.Add('SELECT C.SHORTNAME,A.REC_ID,A.COMPANYID,EMAIL,A.[TITLE],A.FIRSTNAME,LASTNAME');
pQry.SQL.Add(' ,convert(datetime,LASTLOGINTIME,121)-2 as LASTLOGINTIME,GSMNO');
pQry.SQL.Add(',case when INFORMMAILS = 0 then ''Hayır'' when INFORMMAILS = 1 then ''Evet'' end as INFORMMAILS');
pQry.SQL.Add(',case when ISACTIVE = 0 then ''Hayır'' when ISACTIVE = 1 then ''Evet'' end as ISACTIVE');
pQry.SQL.Add(',case when IS_TRAINED = 0 then ''Hayır'' when INFORMMAILS = 1 then ''Evet'' end as IS_TRAINED');
pQry.SQL.Add(',B.[ROLENAME] AS ROLENAME');
pQry.SQL.Add(' FROM [NMC_MIRROR].[dbo].[LOGINS] A With (NOLOCK) ');
pQry.SQL.Add(' LEFT JOIN [NMC_MIRROR].[dbo].[ROLES] B on (A.ROLEID = B. ROLEID)');
pQry.SQL.Add(' LEFT JOIN [NMC_MIRROR].[dbo].[COMPANIES] C on (A.COMPANYID = C.ID)');
where := '';
if ad <>'' then
begin
if where= '' then
begin
pQry.SQL.Add('Where A.FIRSTNAME LIKE _AD ');
pQry.Parameters.ParamByName('P_AD').DataType := ftString;
pQry.Parameters.ParamByName('P_AD').Value := '%'+ad+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.FIRSTNAME LIKE _AD ');
pQry.Parameters.ParamByName('P_AD').DataType := ftString;
pQry.Parameters.ParamByName('P_AD').Value := '%'+ad+'%';
end;
end;
if firma_id <> '' then
begin
if where= '' then
begin
pQry.SQL.Add(' Where A.COMPANYID LIKE _COMPANYID ');
pQry.Parameters.ParamByName('P_COMPANYID').DataType := ftString;
pQry.Parameters.ParamByName('P_COMPANYID').Value := '%'+firma_id+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.COMPANYID LIKE _COMPANYID ');
pQry.Parameters.ParamByName('P_COMPANYID').DataType := ftString;
pQry.Parameters.ParamByName('P_COMPANYID').Value := '%'+firma_id+'%';
end;
end;
if (eposta <> '') then
begin
if where= '' then
begin
pQry.SQL.Add(' Where A.EMAIL LIKE _EMAIL ');
pQry.Parameters.ParamByName('P_EMAIL').DataType := ftString;
pQry.Parameters.ParamByName('P_EMAIL').Value := '%'+eposta+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.EMAIL LIKE _EMAIL ');
pQry.Parameters.ParamByName('P_EMAIL').DataType := ftString;
pQry.Parameters.ParamByName('P_EMAIL').Value := '%'+eposta+'%';
end;
end;
if yetki_duzeyi <> '' then
begin
if where= '' then
begin
pQry.SQL.Add('Where A.ROLEID LIKE _ROLEID ');
pQry.Parameters.ParamByName('P_ROLEID').DataType := ftString;
pQry.Parameters.ParamByName('P_ROLEID').Value := '%'+yetki_duzeyi+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.ROLEID LIKE _ROLEID ');
pQry.Parameters.ParamByName('P_ROLEID').DataType := ftString;
pQry.Parameters.ParamByName('P_ROLEID').Value := '%'+yetki_duzeyi+'%';
end;
end;
if durum <> '' then
begin
if where= '' then
begin
pQry.SQL.Add('Where A.ISACTIVE LIKE _ISACTIVE ');
pQry.Parameters.ParamByName('P_ISACTIVE').DataType := ftString;
pQry.Parameters.ParamByName('P_ISACTIVE').Value := '%'+durum+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.ISACTIVE LIKE _ISACTIVE ');
pQry.Parameters.ParamByName('P_ISACTIVE').DataType := ftString;
pQry.Parameters.ParamByName('P_ISACTIVE').Value := '%'+durum+'%';
end;
end;
// pQry.SQL.Add('order by C.SHORTNAME,A.EMAIL ');
pQry.Open;
if pQry.RecordCount > 0 then
begin
Group := lst_kullanici_islemleri.Groups.Add;
Group.State := [lgsNormal, lgsCollapsible];
while not pQry.Eof do
begin
ListItem := lst_kullanici_islemleri.Items.Add;
ListItem.Caption := IntToStr(I);
ListItem.SubItems.Add(pQry.FieldByName('EMAIL').AsString);
ListItem.SubItems.Add(pQry.FieldByName('FIRSTNAME').AsString + ' ' + pQry.FieldByName('LASTNAME').AsString);
ListItem.SubItems.Add(pQry.FieldByName('TITLE').AsString);
ListItem.SubItems.Add(pQry.FieldByName('ROLENAME').AsString);
ListItem.SubItems.Add(pQry.FieldByName('GSMNO').AsString);
ListItem.SubItems.Add(pQry.FieldByName('IS_TRAINED').AsString);
ListItem.SubItems.Add(pQry.FieldByName('LASTLOGINTIME').AsString);
ListItem.SubItems.Add(fnload_device_count(pQry.FieldByName('COMPANYID').AsString,pQry.FieldByName('REC_ID').AsString));
ListItem.SubItems.Add(pQry.FieldByName('INFORMMAILS').AsString);
ListItem.SubItems.Add(pQry.FieldByName('ISACTIVE').AsString);
ListItem.SubItems.Add(pQry.FieldByName('SHORTNAME').AsString);
ListItem.GroupID := Group.GroupID;
Inc(I);
pQry.Next;
Group.Header := 'Kullanıcı Bilgileri ' + IntToStr(I-1) + ' kullanıcı yüklendi.';
end;
end;
finally
FreeAndNil(pQry);
lst_kullanici_islemleri.Items.EndUpdate;
end;
end;
Formda seçili olan tercihlerde göre SQL komutlarını düzenliyorum,
debug yaptığımda;
Son 'durum' kısmındaki tercih kısmına göre sql eklerken
pQry.SQL.Add('and A.ISACTIVE LIKE _ISACTIVE ');
application uses a value of the wrong type for the current operation
uyarı oluşuyor neden olabilir acaba, yardımcı olabilir misiniz,
Yorumları: 852
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.327 Uzman
23-04-2020, Saat: 15:33
(Son Düzenleme: 23-04-2020, Saat: 15:40, Düzenleyen: hi_selamlar.)
(23-04-2020, Saat: 15:13)Serdal AKSOY Adlı Kullanıcıdan Alıntı: procedure Tfrm_Main.prLoad_kullanıcı_listesi(eposta, ad, yetki_duzeyi, firma_id, durum:string);
var
pQry: TADOQuery;
ListItem, yeni2 :TListItem;
Group: TListGroup;
I:integer;
firma_unvanı, where: string;
begin
try
pQry := TADOQuery.Create(nil);
lst_kullanici_islemleri.Items.BeginUpdate;
lst_kullanici_islemleri.Items.Clear;
I := 1;
lst_kullanici_islemleri.GroupView := true;
pQry.Connection := ADO_13;
pQry.SQL.Add('SELECT C.SHORTNAME,A.REC_ID,A.COMPANYID,EMAIL,A.[TITLE],A.FIRSTNAME,LASTNAME');
pQry.SQL.Add(' ,convert(datetime,LASTLOGINTIME,121)-2 as LASTLOGINTIME,GSMNO');
pQry.SQL.Add(',case when INFORMMAILS = 0 then ''Hayır'' when INFORMMAILS = 1 then ''Evet'' end as INFORMMAILS');
pQry.SQL.Add(',case when ISACTIVE = 0 then ''Hayır'' when ISACTIVE = 1 then ''Evet'' end as ISACTIVE');
pQry.SQL.Add(',case when IS_TRAINED = 0 then ''Hayır'' when INFORMMAILS = 1 then ''Evet'' end as IS_TRAINED');
pQry.SQL.Add(',B.[ROLENAME] AS ROLENAME');
pQry.SQL.Add(' FROM [NMC_MIRROR].[dbo].[LOGINS] A With (NOLOCK) ');
pQry.SQL.Add(' LEFT JOIN [NMC_MIRROR].[dbo].[ROLES] B on (A.ROLEID = B. ROLEID)');
pQry.SQL.Add(' LEFT JOIN [NMC_MIRROR].[dbo].[COMPANIES] C on (A.COMPANYID = C.ID)');
where := '';
if ad <>'' then
begin
if where= '' then
begin
pQry.SQL.Add('Where A.FIRSTNAME LIKE _AD ');
pQry.Parameters.ParamByName('P_AD').DataType := ftString;
pQry.Parameters.ParamByName('P_AD').Value := '%'+ad+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.FIRSTNAME LIKE _AD ');
pQry.Parameters.ParamByName('P_AD').DataType := ftString;
pQry.Parameters.ParamByName('P_AD').Value := '%'+ad+'%';
end;
end;
if firma_id <> '' then
begin
if where= '' then
begin
pQry.SQL.Add(' Where A.COMPANYID LIKE _COMPANYID ');
pQry.Parameters.ParamByName('P_COMPANYID').DataType := ftString;
pQry.Parameters.ParamByName('P_COMPANYID').Value := '%'+firma_id+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.COMPANYID LIKE _COMPANYID ');
pQry.Parameters.ParamByName('P_COMPANYID').DataType := ftString;
pQry.Parameters.ParamByName('P_COMPANYID').Value := '%'+firma_id+'%';
end;
end;
if (eposta <> '') then
begin
if where= '' then
begin
pQry.SQL.Add(' Where A.EMAIL LIKE _EMAIL ');
pQry.Parameters.ParamByName('P_EMAIL').DataType := ftString;
pQry.Parameters.ParamByName('P_EMAIL').Value := '%'+eposta+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.EMAIL LIKE _EMAIL ');
pQry.Parameters.ParamByName('P_EMAIL').DataType := ftString;
pQry.Parameters.ParamByName('P_EMAIL').Value := '%'+eposta+'%';
end;
end;
if yetki_duzeyi <> '' then
begin
if where= '' then
begin
pQry.SQL.Add('Where A.ROLEID LIKE _ROLEID ');
pQry.Parameters.ParamByName('P_ROLEID').DataType := ftString;
pQry.Parameters.ParamByName('P_ROLEID').Value := '%'+yetki_duzeyi+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.ROLEID LIKE _ROLEID ');
pQry.Parameters.ParamByName('P_ROLEID').DataType := ftString;
pQry.Parameters.ParamByName('P_ROLEID').Value := '%'+yetki_duzeyi+'%';
end;
end;
if durum <> '' then
begin
if where= '' then
begin
pQry.SQL.Add('Where A.ISACTIVE LIKE _ISACTIVE ');
pQry.Parameters.ParamByName('P_ISACTIVE').DataType := ftString;
pQry.Parameters.ParamByName('P_ISACTIVE').Value := '%'+durum+'%';
where:= 'dolu';
end else if where <> '' then
begin
pQry.SQL.Add('and A.ISACTIVE LIKE _ISACTIVE ');
pQry.Parameters.ParamByName('P_ISACTIVE').DataType := ftString;
pQry.Parameters.ParamByName('P_ISACTIVE').Value := '%'+durum+'%';
end;
end;
// pQry.SQL.Add('order by C.SHORTNAME,A.EMAIL ');
pQry.Open;
if pQry.RecordCount > 0 then
begin
Group := lst_kullanici_islemleri.Groups.Add;
Group.State := [lgsNormal, lgsCollapsible];
while not pQry.Eof do
begin
ListItem := lst_kullanici_islemleri.Items.Add;
ListItem.Caption := IntToStr(I);
ListItem.SubItems.Add(pQry.FieldByName('EMAIL').AsString);
ListItem.SubItems.Add(pQry.FieldByName('FIRSTNAME').AsString + ' ' + pQry.FieldByName('LASTNAME').AsString);
ListItem.SubItems.Add(pQry.FieldByName('TITLE').AsString);
ListItem.SubItems.Add(pQry.FieldByName('ROLENAME').AsString);
ListItem.SubItems.Add(pQry.FieldByName('GSMNO').AsString);
ListItem.SubItems.Add(pQry.FieldByName('IS_TRAINED').AsString);
ListItem.SubItems.Add(pQry.FieldByName('LASTLOGINTIME').AsString);
ListItem.SubItems.Add(fnload_device_count(pQry.FieldByName('COMPANYID').AsString,pQry.FieldByName('REC_ID').AsString));
ListItem.SubItems.Add(pQry.FieldByName('INFORMMAILS').AsString);
ListItem.SubItems.Add(pQry.FieldByName('ISACTIVE').AsString);
ListItem.SubItems.Add(pQry.FieldByName('SHORTNAME').AsString);
ListItem.GroupID := Group.GroupID;
Inc(I);
pQry.Next;
Group.Header := 'Kullanıcı Bilgileri ' + IntToStr(I-1) + ' kullanıcı yüklendi.';
end;
end;
finally
FreeAndNil(pQry);
lst_kullanici_islemleri.Items.EndUpdate;
end;
end;
Formda seçili olan tercihlerde göre SQL komutlarını düzenliyorum,
debug yaptığımda;
Son 'durum' kısmındaki tercih kısmına göre sql eklerken
pQry.SQL.Add('and A.ISACTIVE LIKE _ISACTIVE ');
application uses a value of the wrong type for the current operation
uyarı oluşuyor neden olabilir acaba, yardımcı olabilir misiniz,
Merhabalar,
Hata uyarısında uygulama geçerli işlem için yanlış türde bir değer kullanıyor mesajı veriyor.
Parametre tanımlamanızda tip hatanız var. Parametreleri kontrol etmeniz gerekli.
Örneğin ;
P_COMPANYID
P_ROLEID
P_ISACTIVE
bu alanlar INTEGER olabilir mi?
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 8
Konuları: 1
Kayıt Tarihi: 15-04-2020
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4 Başlangıç
Hepsi string, şöyle entersan bir durum var, formdan gelen seçeneklerde, değierleri seçili deği ve durum kısmı seçili ise bu hata oluşmadan işlem yapılıyor,
Yorumları: 852
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.327 Uzman
(23-04-2020, Saat: 16:04)Serdal AKSOY Adlı Kullanıcıdan Alıntı: Hepsi string, şöyle entersan bir durum var, formdan gelen seçeneklerde, değierleri seçili deği ve durum kısmı seçili ise bu hata oluşmadan işlem yapılıyor,
Merhaba,
Bu tarz karmaşık sorgularda StoredProcedure kullanıyorum.
Hatanın nerden geldiğini tam olarak görmek için önerim;
Bütün kriterleri hesaplatıp değişken içerisinde atıp en son pQry.SQL Text içerisine atmadan önce
Memo içerisine atın ve memo içerisinde ki sorguyu bir editör'e yapıştırıp sorguyu test edin.
Hatayı bu şekilde çok daha rahat göreceksiniz.
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Yorumları: 8
Konuları: 1
Kayıt Tarihi: 15-04-2020
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4 Başlangıç
23-04-2020, Saat: 16:15
(Son Düzenleme: 23-04-2020, Saat: 17:27, Düzenleyen: Fesih ARSLAN.)
teşekkürler,
Hatamı buldum, bu şekilde düzenleyince çalıştı,
pQry.Connection := ADO_13;
pQry.SQL.Add('SELECT C.SHORTNAME,A.REC_ID,A.COMPANYID,EMAIL,A.[TITLE],A.FIRSTNAME,LASTNAME');
pQry.SQL.Add(' ,convert(datetime,LASTLOGINTIME,121)-2 as LASTLOGINTIME,GSMNO');
pQry.SQL.Add(',case when INFORMMAILS = 0 then ''Hayır'' when INFORMMAILS = 1 then ''Evet'' end as INFORMMAILS');
pQry.SQL.Add(',case when ISACTIVE = 0 then ''Hayır'' when ISACTIVE = 1 then ''Evet'' end as ISACTIVE');
pQry.SQL.Add(',case when IS_TRAINED = 0 then ''Hayır'' when INFORMMAILS = 1 then ''Evet'' end as IS_TRAINED');
pQry.SQL.Add(',B.[ROLENAME] AS ROLENAME');
pQry.SQL.Add(' FROM [NMC_MIRROR].[dbo].[LOGINS] A With (NOLOCK) ');
pQry.SQL.Add(' LEFT JOIN [NMC_MIRROR].[dbo].[ROLES] B on (A.ROLEID = B. ROLEID)');
pQry.SQL.Add(' LEFT JOIN [NMC_MIRROR].[dbo].[COMPANIES] C on (A.COMPANYID = C.ID)');
pQry.SQL.Add('WHERE A.REC_ID > 0');
if ad <>'' then
begin
pQry.SQL.Add('and A.FIRSTNAME LIKE _AD ');
end;
if firma_id <> '' then
begin
pQry.SQL.Add('and A.COMPANYID LIKE _COMPANYID ');
end;
if (eposta <> '') then
begin
pQry.SQL.Add('and A.EMAIL LIKE _EMAIL ');
end;
if yetki_duzeyi <> '' then
begin
pQry.SQL.Add('and A.ROLEID LIKE _ROLEID ');
end;
if durum <> '' then
begin
pQry.SQL.Add('and A.ISACTIVE LIKE _ISACTIVE ');
end;
pQry.SQL.Add('order by C.SHORTNAME,A.EMAIL ');
if ad <>'' then
begin
pQry.Parameters.ParamByName('P_AD').DataType := ftString;
pQry.Parameters.ParamByName('P_AD').Value := '%'+ad+'%';
end;
if firma_id <> '' then
begin
pQry.Parameters.ParamByName('P_COMPANYID').DataType := ftString;
pQry.Parameters.ParamByName('P_COMPANYID').Value := '%'+firma_id+'%';
end;
if (eposta <> '') then
begin
pQry.Parameters.ParamByName('P_EMAIL').DataType := ftString;
pQry.Parameters.ParamByName('P_EMAIL').Value := '%'+eposta+'%';
end;
if yetki_duzeyi <> '' then
begin
pQry.Parameters.ParamByName('P_ROLEID').DataType := ftString;
pQry.Parameters.ParamByName('P_ROLEID').Value := '%'+yetki_duzeyi+'%';
end;
if durum <> '' then
begin
pQry.Parameters.ParamByName('P_ISACTIVE').DataType := ftString;
pQry.Parameters.ParamByName('P_ISACTIVE').Value := '%'+durum+'%';
end;
Yorumları: 852
Konuları: 40
Kayıt Tarihi: 11-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.327 Uzman
(23-04-2020, Saat: 16:15)Serdal AKSOY Adlı Kullanıcıdan Alıntı: teşekkürler,
Hatamı buldum, bu şekilde düzenleyince çalıştı,
pQry.Connection := ADO_13;
pQry.SQL.Add('SELECT C.SHORTNAME,A.REC_ID,A.COMPANYID,EMAIL,A.[TITLE],A.FIRSTNAME,LASTNAME');
pQry.SQL.Add(' ,convert(datetime,LASTLOGINTIME,121)-2 as LASTLOGINTIME,GSMNO');
pQry.SQL.Add(',case when INFORMMAILS = 0 then ''Hayır'' when INFORMMAILS = 1 then ''Evet'' end as INFORMMAILS');
pQry.SQL.Add(',case when ISACTIVE = 0 then ''Hayır'' when ISACTIVE = 1 then ''Evet'' end as ISACTIVE');
pQry.SQL.Add(',case when IS_TRAINED = 0 then ''Hayır'' when INFORMMAILS = 1 then ''Evet'' end as IS_TRAINED');
pQry.SQL.Add(',B.[ROLENAME] AS ROLENAME');
pQry.SQL.Add(' FROM [NMC_MIRROR].[dbo].[LOGINS] A With (NOLOCK) ');
pQry.SQL.Add(' LEFT JOIN [NMC_MIRROR].[dbo].[ROLES] B on (A.ROLEID = B. ROLEID)');
pQry.SQL.Add(' LEFT JOIN [NMC_MIRROR].[dbo].[COMPANIES] C on (A.COMPANYID = C.ID)');
pQry.SQL.Add('WHERE A.REC_ID > 0');
if ad <>'' then
begin
pQry.SQL.Add('and A.FIRSTNAME LIKE _AD ');
end;
if firma_id <> '' then
begin
pQry.SQL.Add('and A.COMPANYID LIKE _COMPANYID ');
end;
if (eposta <> '') then
begin
pQry.SQL.Add('and A.EMAIL LIKE _EMAIL ');
end;
if yetki_duzeyi <> '' then
begin
pQry.SQL.Add('and A.ROLEID LIKE _ROLEID ');
end;
if durum <> '' then
begin
pQry.SQL.Add('and A.ISACTIVE LIKE _ISACTIVE ');
end;
pQry.SQL.Add('order by C.SHORTNAME,A.EMAIL ');
if ad <>'' then
begin
pQry.Parameters.ParamByName('P_AD').DataType := ftString;
pQry.Parameters.ParamByName('P_AD').Value := '%'+ad+'%';
end;
if firma_id <> '' then
begin
pQry.Parameters.ParamByName('P_COMPANYID').DataType := ftString;
pQry.Parameters.ParamByName('P_COMPANYID').Value := '%'+firma_id+'%';
end;
if (eposta <> '') then
begin
pQry.Parameters.ParamByName('P_EMAIL').DataType := ftString;
pQry.Parameters.ParamByName('P_EMAIL').Value := '%'+eposta+'%';
end;
if yetki_duzeyi <> '' then
begin
pQry.Parameters.ParamByName('P_ROLEID').DataType := ftString;
pQry.Parameters.ParamByName('P_ROLEID').Value := '%'+yetki_duzeyi+'%';
end;
if durum <> '' then
begin
pQry.Parameters.ParamByName('P_ISACTIVE').DataType := ftString;
pQry.Parameters.ParamByName('P_ISACTIVE').Value := '%'+durum+'%';
end;
Merhaba,
Paylaştığınız kodları formatlama ile kullanırsanız okunaklılığı çok daha iyi olur.
Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
|