Filed under: Bilgisayar

How To : Generate XSD From XML File in C#

Mart 22nd, 2011

XML dosyalarından XSD şemaları üretmek istediğinizde, Command Promptan, xsd.exe (XML Schema Definition Tool) uygulamasını kullanabilirsiniz. Bunun ile ilgili bir yazı yazmıştım yanlış hatırlamıyorsam. Fakat dinamik olarak şemalar üretmek istediğinizde veya uygulamanıza bu şemaları ürettirmek istediğinizde cmd den komut yazıp, xsd.exe yi kullanmanız uygun olmayacaktır. Bunun yerine aşağıdaki metodu kullanabilirsiniz.

     private void GenerateSchema(string filePath)
        {
            var reader = XmlReader.Create(filePath);
            var schema = new XmlSchemaInference();
            var schemaSet = schema.InferSchema(reader);
            TextWriter writeFile = new StreamWriter("c:\\schema.xsd");
            foreach (XmlSchema s in schemaSet.Schemas())
            {
                s.Write(writeFile);
            }
            writeFile.Close();
        }

Tags: , , , , , , , , ,
Posted in .NeT 2008, BizTalk, Yazılım | No Comments »

Şifremin Gücü Adına!!!

Mart 7th, 2011

aşağıdaki sitede kullanmış olduğunuz şifrelerin ne kadar kuvvetli olduğunu görebilirsiniz. Ayrıca tahmini olarak ne kadar sürede bu şifrenin kırılabileceğini size söylüyor.

Site : http://howsecureismypassword.net/

Benim şifremin kırılma süresi ise enteresan :)

Buyrun;

 

Tags: , , ,
Posted in Genel, Sistem | No Comments »

Sharepoint 2010 Error : The underlying connection was closed: “Could not establish trust relationship for the SSL/TLS secure channel.”

Mart 6th, 2011

Basit olarak aşağıdaki şekilde bu hatayı çözebilirsiniz.

SSL Webservisinizi çağırmadan önce BypassCertificateError metodunu çağırın. Bu metod ile sertifika hatasını geçiştirebilirsiniz.

 using System.Net;
  using System.Net.Security;
  using System.Security.Cryptography.X509Certificates;

        public static void BypassCertificateError()
        {
            ServicePointManager.ServerCertificateValidationCallback +=

                delegate(
                    Object sender1,
                    X509Certificate certificate,
                    X509Chain chain,
                    SslPolicyErrors sslPolicyErrors)
                {
                    return true;
                };
        }

Tags: , , , , , ,
Posted in Sharepoint, Yazılım | 2 Comments »

C# da Outlook ile Mail Gönderme

Mart 4th, 2011

Hazırladığınız uygulamada outlooku kullanarak mail göndermek istiyorsanız öncelikle “Microsoft Outlook 14.0 Object Library” i referans olarak eklemeniz gerekmektedir. 14.0 bilgisayarınızda kurulmuş olan office versiyonudur. Bu rakam değişiklik gösterebilir.

Daha sonra usinglerimize aşağıdaki satırı ilave ediyoruz. Böylece uzun uzun namespaceleri yazmamıza gerek kalmadan Outlook diyerek tüm metodları kullanabiliriz.

using Outlook = Microsoft.Office.Interop.Outlook;

Daha sonra aşağıdaki basit olarak hazırlanmış olan metodu kullanıp şekillendirerek mail gönderimi yaptırabilirsiniz.

private void SendOutlookMail()
        {
            try
            {
                Outlook.Application oApp = new Outlook.Application();
                Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

                oMsg.To = "To Mail Adresleri";
                oMsg.CC = "CC deki Mail Adresleri";
                oMsg.BCC = "BCC deki Mail Adresleri";
                oMsg.Recipients.ResolveAll();

                oMsg.Subject = "Mailin Subjecti";
                oMsg.Body = "Mailin İçeriği";

                //Aşağıdaki satırları attachment göndermek istiyorsanız kullanabilirsiniz. İstemiyorsanız bunlara gerek yok
                String sSource = "C:\\xyz.xlsx";
                String sDisplayName = "Görünen Dosya İsmi";
                int iPosition = (int)oMsg.Body.Length + 1;
                int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
                Outlook.Attachment oAttach = oMsg.Attachments.Add(sSource, iAttachType, iPosition, sDisplayName);

                //Mail gönderilmeden önce kullanıcıya değişiklik yapmak için imkan tanınıyor
                oMsg.Display(true);  

                oAttach = null;
                oMsg = null;
                oApp = null;
            }
            catch (Exception e)
            {
                MessageBox.Show("Hata Oluştu", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

Tags: , , , , , , ,
Posted in .NeT 2008, Sistem, Yazılım | 2 Comments »

C# da Çalışan Uygulamanın Klasörünü Bulma

Mart 4th, 2011

Çalışan uygulamanın, exesinin bulunduğu klasörü aşağıdaki şekilde bulabilirsiniz.

using System.IO;
using System.Windows.Forms;
string appPath = Path.GetDirectoryName(Application.ExecutablePath);

Tags: , , , , , ,
Posted in .NeT 2008, Yazılım | No Comments »

DataTable da Sütunun DataType’ını Belirleme

Mart 4th, 2011

Bir datatable’ın Column.DataType propertysini aşağıdaki gibi belirleyebilirsiniz.

String
DataColumn colString = new DataColumn(“StringCol”);
colString.DataType = System.Type.GetType(“System.String”);
myTable.Columns.Add(colString);
Int32
DataColumn colInt32 = new DataColumn(“Int32Col”);
colInt32.DataType = System.Type.GetType(“System.Int32″);
myTable.Columns.Add(colInt32);
Boolean
DataColumn colBoolean = new DataColumn(“BooleanCol”);
colBoolean.DataType = System.Type.GetType(“System.Boolean”);
myTable.Columns.Add(colBoolean);
TimeSpan
DataColumn colTimeSpan = new DataColumn(“TimeSpanCol”);
colTimeSpan.DataType = System.Type.GetType(“System.TimeSpan”);
myTable.Columns.Add(colTimeSpan);
DateTime
DataColumn colDateTime = new DataColumn(“DateTimeCol”);
colDateTime.DataType = System.Type.GetType(“System.DateTime”);
myTable.Columns.Add(colDateTime);
Decimal
DataColumn colDecimal = new DataColumn(“DecimalCol”);
colDecimal.DataType = System.Type.GetType(“System.Decimal”);
myTable.Columns.Add(colDecimal);

Tags: , , , , ,
Posted in .NeT 2008, Yazılım | No Comments »

Sharepoint 2010 : Farmlar Arası Service Application Paylaşımı

Şubat 10th, 2011

Basit olarak Farmlar arası Service Application Paylaşımı hakkında bilgi vermeye çalışacağım. Ne gerek var, ben technetten okurum diyorsanız buyurun http://technet.microsoft.com/en-us/library/ff621100.aspx :)

Edit : Pek basit ve kısa olmadı, yani ben bu kadar uzayabileceğini düşünmemiştim…

Ama technette olmayan, basit hatalar ve çözümlerinden de bahsedecem.

Farmlar arasında paylaşımını yapabileceğiniz Service Application’lar aşağıdakilerdir.

  • Business Data Connectivity
  • Managed Metadata
  • User Profile
  • Search
  • Secure Store
  • Web Analytics
Tanımlar

A Farmı : Paylaşımı yapacak olan Farm – Publisher Farm

B Farmı : Paylaşımdan yararlanacak olan Farm – Consumer Farm

Basit Olarak Yapılması Gerekenler

    1. Farmlar arasında Trust Sağlamak

    Exchange trust certificates between the farms ile ilgili Technet linki : http://technet.microsoft.com/en-us/library/ee704552.aspx

Bu işlem için A farmından Root Certificate, B farmından Root ve STS Certificate larını almamız gerekecek. Sertifikaları Central Administration ı kullanarak da alabiliriz. Ama bence bununla uğraşmayın. Aşağıdaki komutları satır satır Sharepoint Management Shell e yapıştırıp, çalıştırın. Bunun sonucunda C dizininde sertifikaların oluştuğunu göreceksiniz.

A Farmı (Servisi Share edecek olan Farm):

Root Certificate

$rootCert = (Get-SPCertificateAuthority).RootCertificate

$rootCert.Export(“Cert”) | Set-Content C:\PublishingFarmRoot.cer -Encoding byte

B Farmı (Servisi kullanacak olan Farm):

Root Certificate

$rootCert = (Get-SPCertificateAuthority).RootCertificate

$rootCert.Export(“Cert”) | Set-Content C:\ConsumingFarmRoot.cer -Encoding byte

STS Certificate

$stsCert = (Get-SPSecurityTokenServiceConfig).LocalLoginProvider.SigningCertificate

$stsCert.Export(“Cert”) | Set-Content C:\ConsumingFarmSTS.cer -Encoding byte

Sertifikalarımızı oluşturduktan sonra B Farmının sertifikalarını A Serverına, A Farmının sertifikasını ise B Serverına taşıyoruz. Daha sonra yine aşağıdaki komutlar ile bu sertifikaları import ediyoruz. Sertifikaların isimlerini değiştirmediyseniz ve kopyalanan sertifikaları yine C:\ dizinine koyduysanız aşağıdaki komutlarda herhangi bir değişiklik yapmadan sertifikaları import edebilirsiniz.

A Farmı (Servisi Share edecek olan Farm):

Root Certificate

$trustCert = Get-PfxCertificate C:\ConsumingFarmRoot.cer

New-SPTrustedRootAuthority ConsumingFarm -Certificate $trustCert

STS Certificate

$stsCert = Get-PfxCertificate c:\ConsumingFarmSTS.cer

New-SPTrustedServiceTokenIssuer ConsumingFarm -Certificate $stsCert

B Farmı (Servisi kullanacak olan Farm):

Root Certificate

$trustCert = Get-PfxCertificate C:\PublishingFarmRoot.cer

New-SPTrustedRootAuthority PublishingFarm -Certificate $trustCert

Trust işlemini sağlamak bu kadar. İlk başlarda biraz göz korkutabilir fakat görüldüğü kadar zor değil. Burada dikkat etmeniz gereken sadece Hangi sertifikanın Publish veya Consumer Farmlardan export edildiği ve/veya import edildiği. Geri kalan işlemler copy/paste :)

    2. Service Application’ı Yayınlamak

On the publishing farm, publish the service application ile ilgili Technet linki : http://technet.microsoft.com/en-us/library/ee704545.aspx

Bu adımı da yine Sharepoint Management Shell kullanarak yapabilirsiniz. Ben Central Administration dan yapmanızı öneririm. Service Application’ı çok basit bir şekilde publish ediyoruz.

Central Administration -> Application Management -> Manage Service Applications yolunu izleyip, yayınlamak istediğimiz servisi seçiyoruz ve ribbon kısmındaki Publish butonuna tıklıyoruz.


Karşımıza çıkan ekranda, Publish to other farms alanının işaretli olduğuna dikkat ediyoruz ve Published URL alanında yazan URI kopyaladığımızdan emin olduktan sonra OK butonu ile servisimizi publish ediyoruz.

    3. Servisi Kullanacak Olan Farm’a Yetki Vermek

    On the consuming farm, set the permission to the appropriate service applications ile ilgili Technet linki : http://technet.microsoft.com/en-us/library/ff700211.aspx

    Bu işlem temel olarak çok basit. Yapmanız gereken sadece iki adet işlem var.

    Servisi kullanacak olan B Farmı üzerinde, Sharepoint Management Shelli çalıştırıp aşağıdaki komutu yazıyoruz.

    Get-SPFarm | Select Id

    Bu komutun çıktısı bize yetki verilecek olan Farmın ID sini verecek. Daha sonra Servis Paylaşımı yapacak olan A Farmında, Manage service applications kısmında Application Discovery and Load Balancing Service Application servisinini seçiyoruz. Yine Ribbon kısmından Permissions butonuna tıklıyoruz.


    Bir önceki adımda elde ettiğimiz ID yi buraya yapıştırıyoruz.


    Add butonu ile alt kısıma eklenen ID ye Full Control yetkisi verip OK butonuna tıklıyoruz.


    4. Paylaşılan Service Bağlanma

On the consuming farm, connect to the remote service application ile ilgili Technet linki : http://technet.microsoft.com/en-us/library/ee704558.aspx

Tüm ayarlarımız tamamlandıktan sonra geriye paylaştığımız bu servise bağlanmak kaldı. Central Managementtan Manage service applications ekranına geliyoruz ve ribbonlardan Connect butonuna tıklıyoruz.


Buradan bağlanamak istediğimiz Servisi seçiyoruz. Karşımıza gelen ekranda Farm or Service Application address alanına 2. adımda bir kenara not aldığımız Published URL stringini yapıştırıyoruz ve OK butonu ile işlemi tamamlıyoruz. Published URL i bir kenara not etmediyseniz, 2. adımı tekrarlamanız durumunda yine aynı URI yi elde edebilirsiniz.


Yukarıdaki anlattığım adımlar ve ayarlardan sonra, bağlanmaya çalışırken, aşağıdaki gibi bir hata alabilirsiniz.

“Unable to connect to the specified address. Verify the URL you entered and contact the service administrator for more details.”

Tabi bu hata size anlamlı gelmeyecektir, zira çok genel bir hata. Bunun üzerine ULS loglarına (..\..\14\LOGS) bakacaksınız. Burada da muhtemelen aşağıdaki hatayı alacaksınız.

“SharePoint Foundation Claims Authentication fo1t Monitorable …inistration.Claims.SPClaimProviderManager.GetClaimProvidersForContext(Uri context, SPClaimProviderOperationOptions mode, IEnumerable`1 providerNames) at Microsoft.SharePoint.Administration.Claims.SPClaimProviderOperations.ClaimsForEntity(Uri context, SPClaimProviderOperationOptions mode, String[] providerNames, SPClaim entity) at Microsoft.SharePoint.IdentityModel.SPSecurityTokenService.AugmentClaimsIdentity(IClaimsIdentity identity, SPClaim identityClaim, RequestSecurityToken request) at Microsoft.SharePoint.IdentityModel.SPSecurityTokenService.GetOutputClaimsIdentity(IClaimsPrincipal principal, RequestSecurityToken request, Scope scope) at Microsoft.IdentityModel.SecurityTokenService.SecurityTokenService.Issue(IClaimsPrincipal principal, RequestSecurityToken request) … “

Buna göre yapmış olduğunuz hatalar aşağıdakilerden biri olabilir :

  1. Sertifika export ve import işlemleri sırasında hangi sertifikanın hangi serverdan alınıp, hangi servera yükleneceğini karıştırmış olabilirsiniz. Eğer sorunun bu olduğunu düşünüyorsanız, Central Administration -> Security -> Trust yolunu izleyip, her iki serverdaki yüklemiş olduğunuz sertifikaları silin. Burada bulunan local sertifikayı silmemeye özen gösterin.
    Daha sonra birinci adımı tekrarlayın.
  2. Yukarıda anlattığım, üçüncü adımdaki aşamayı yanlış uygulamış olmak. Örneğin; Servisi kullanacak olan farmdaki Application Discovery and Load Balancing Service ine, servisi publish edecek olan farma yetki vermek. Tam tersi olması gerekiyordu.
  3. A ve B farmlarının kurulumlarının farklı domain userları ile yapılması. Bu ayrı bölgelerdeki farmları ayrı sorumlulara teslim etmek için gayet makul ve mantıklı bir işlem. Böyle bir durum ile karşı karşıya iseniz, Paylaşımı yapılan Service Application’da, diğer farmın userına da Full Control yetkisi vermeniz gerekecektir.
  4. A ve B Farmlarının bulunduğu serverlar birbirleri ile 32844 portundan konuşabilir durumda olmalıdırlar.
  5. Muhtemelen yukarıdaki çoğu durum ile karşılaşmayacaksınız. Bu satıra kadar indiyseniz hiçbir şey derdinize çözüm olmamış demektir. Aslında çözümünüz çok basit birşey olabilir. Sharepoint’in temelinden gelen bir çözüm :) IISRESET. Evet evet yanlış duymadınız, service bağlanmayı denemeden önce, yaptığınız değişikliklerden sonra, her iki servera da mutlaka iisreset atın.

Bunlar da yardımcı olmadıysa, probleminizi paylaşırsanız sevinirim.

Tags: , , , , , , , , , , , , , , ,
Posted in Sharepoint | 4 Comments »

Biztalk Error : “use of unconstructed message”

Ocak 20th, 2011

Bir Message Assigment Shape’inde bir mesaj hem source hem de destination olamaz şeklinde birşey keşfettim bugun.

Nasıl Keşfettim?

Bir mesajın içinde ufak bir değişiklik yapılması gerekiyordu. Bunun için bir metod yazdım ve helper classıma koydum.

msg = Helper.metod(msg);

diyerekten atamayı yapabileceğimi düşündüm birden. Denedim “use of unconstructed message” diye hata aldım. Construct Shape’ine baktım, mesajı vermişim buraya :) Tabii kafa karıştı benim. Belki aynı satırda kullandırmaz dedim. Mesajı XmlDocumenta atayıp metoda bunu gönderdim. Yine aynı hatayı aldım.

Sonra tabii bu olay beni aşar deyip google amcaya sordum.
http://www.mombu.com/microsoft/biztalk-server-new-user/t-use-of-unconstructed-message-error-1049792.html adresinde randal van splunteren abimiz aşağıdaki gibi bir yorum yapmış.

Hello golddog,

Make sure that the transform has a different source and destination message.
I your case the source message is the message that comes in through the receive
shape. However you need to create a new message instance of the same message
type as the destination for the transform/map. You can than also use this
message to send out by using the send shape.

In general in a transform shape you can’t use the same message for both source
and destination. This is because messages are immutable in BizTalk.

Buradaki “In general in a transform share you can’t use the same message for both source and destination. This is because messages are immutable in BizTalk.” cümlesi olayı aydınlattı. Daha sonra yeni bir mesaj yapıp atamayı buna yapınca problem kalmadı.

Tags: , , , , ,
Posted in BizTalk | No Comments »

Sharepoint Alert Problemi

Ocak 17th, 2011

Sharepoint MVP si olan bir arkadaş çok güzel bir makale yazmış, genel olarak tüm alert me sorunlarını bu check liste bakarak çözebilirsiniz. Ama bunların hepsini yaptıysanız ve hala sorununuz düzelmediyse, siz de benim yaşadıklarımı yaşamış olabilirsiniz. Bu arada ben de ki çözüm çok basitti tabii bu sorunu yakalamak biraz zor oldu.

Benim sorunum tam olarak, Bir listeye Alert Me ekleyince, aboneliğin başarılı bir şekilde gerçekleştiğini anlatan mail geliyordu. Fakat liste veya döküman kütüphanesinde herhangi bir değişiklik olduğunda, bunu belirten instant mailler gelmiyordu. Aşağıdaki makalede yazıldığı üzere

select * from eventcache where EventData is not null
select * from eventlog where ListID = ‘xxx’
select * from EventCache
select * from eventcache order by EventTime DESC

Sorgularıyla alertin DB ye düştüğünü, Job çalışınca buradaki itemın silindiğini yani mailin gönderildiğini gördüm. Event Log lara da bir şey düşmüyordu. Sonra Sharepoint Loglara bakmak aklıma geldi. Orada da her alert me mailinin gönderilmesi sırasında “Alerts Job failed to initialize site collection for Subscriptionid:” hatasının alındığını gördüm. En altta bunun nasıl çözüldüğüne bahsettim.

MVP arkadaşımızın yazdığı makaleyi aşağıya koyuyorum. Orjinal linki ise şurda…

Question: How to Troubleshoot Alerts in WSS 3.0 / MOSS

Answer:

The most common issue in alert is the user will get the initial email, but will not get when changes are made to the list where he configured the alert. Check the following settings in order and ensure that it is correct.

1. Is it an upgrade from V2 to V3? If yes, check the upgrade section at the bottom of this page.

2. If this is a new install of V3 (WSS or MOSS), then do the following

a. Create a new web app and see if the alerts work there. If yes, you can move the content db of the non-working site to this one. If customer is not ready to do that, then try the following.

b. Open the command prompt and go to the 12\Bin folder. Run this command and see whether alerts are enabled for the web application.

Stsadm.exe-o getproperty -url http://problemsite -pn alerts-enabled

The expected output is <Property Exist=”Yes” Value=”yes” />. If you don’t get this, run the following command to change the value.

stsadm.exe -o setproperty -pn alerts-enabled -pv “true” -url http://problemsite

If the property is Yes and still the alerts are not sent, toggle the property from Yes to NO

and then from No to Yes. This may delete all the existing alerts and warn the customer

about this.

c. Check the property job-immediate-alerts schedule through command prompt. Run this command from the 12\bin folder. If we have issues with Scheduled alerts like daily or weekly, then check the property job-daily-alerts and job-weekly-alerts.

stsadm.exe -o getproperty -url http://ProblemSite -pn job-immediate-alerts

The expected output is

<Property Exist=”Yes” Value=”every 5 minutes between 0 and 59″/>. If you don’t get this, run the following command to change the value.

stsadm.exe -o setproperty -pn job-immediate-alerts -pv “every 5 minutes

between 0 and 59″ -url http://ProblemSite

d. Confirm the above step through the UI. Central adminàOperationsàTimer Job Definitions and ensure that a job named Immediate Alerts is present for the web application.

e. Configure the alert for a user in a list. Instead of typing the domain name\ user name, type the email address of the user and see if he gets initial email. Then make a change to the list and see whether he gets the mail related to the change.

f. If he gets the alert as expected, then create a new alert and this time select the user from the people picker or type the domain name\user name.

g. If the alert is not working after doing the above step, then check the ImmedSubscriptions / SchedSubscriptions table of the content db of the web application depending on the type of alert and see a new record is added and ensure that the email field for the user is populated correctly. If not, check whether the email address is present in the user’s profile through the SSP admin page.

h. The initial alert is not security trimmed. So irrespective of whether the user has privileges on the list or not, the initial alert will be sent. If the user is not getting alert for any changes, then check whether the user has Read permission on the list.

i. This also happen if there is some issue in their mail provider (third party email providers. In this case, capture the ULS log with all information events in the verbose mode and check for lines which says Alert has been sent.

j. Email enabled security groups can also be used for configuring alerts. If the changes are not notified to the members of the group, check whether the group is added to the list with minimum Read permission. Also some email providers block email groups if the number of members are more than certain number.

k. Open SQL Query Analyzer; connect to the content database of problematic site. Run the following query.

Select * from timerlock

This server is responsible for processing the timer service. You can follow this KB –

http://support.microsoft.com/kb/934838 to sync the accounts and password across the

Farm

The internal working mechanism of how an alert should work in v3:

The EventCache table records the SQL level events as they occur and the EventData and ACL columns are not NULL for an alert event. There is an alerts timer job that runs periodically to process the records in the EventCache. After the alerts timer job runs, it nulls out the EventData and ACL columns. Then, it will log an event into the EventLog table. So check the following in SQL.

select * from eventcache where EventData is not null

This will output all of the subscriptions which have not been processed yet. We can see if there are some alerts which are not processed.

select * from eventlog where ListID = ‘xxx’

You can get the ListID from the EventCache table by running

Select * from EventCache and check the documents which correspond to the problematic list.

If you cannot find any record, perform the following tests:

Run filemon on the MOSS server which is responsible for the timer service and check if the Timer

service picks up the alert template during the whole process.

Upload a new document to the document library which is supposed to have the alerts. Begin running

the filemon and analyze the logs.

p. select * from eventcache order by EventTime DESC

Check if the latest log is the one corresponds to your uploaded document. Make sure the EventData and ACL columns are not NULL.

After 5 minutes or more minutes, check the EventCache table again to see if the EventData and ACL columns are NULLed.

If so, stop filemon after the EventData and ACL columns are NULLed . Review log.

Upgrade from V2 to V3

1. Check this KB – http://support.microsoft.com/kb/936759/en-us

2. If no alerts are getting triggered even for a new web app, then run the Psconfig Wizard without changing any options

The timer job displayed an older date because the upgrade job was hung

3. If the alert works on new web apps, then you can move the site collections from the upgraded web app to the newly created web app through stsadm –o backup / restore or stsadm –o export / import. This action will be useful only if you have fewer site collections and this is only a workaround.


Sorununuz çözülmedi mi o zaman google da “Alerts Job failed to initialize site collection for Subscriptionid:” hatasını aratın.

Şu link te ben çözümü buldum. Buna göre yukarıdaki hatada verilen URL’in Access Drive Mappings’te Default Zone olarak işaretlenmiş olması gerekmekteymiş.

WPJim adlı kullanıcının yaptığı tam açıklama şu şekilde:

Found the solution for my problem – another Forum had listed this as a solution (can’t recall which, been to so many):

Go to the Central Administration tool for the affected site, click on Operations –> Access Drive Mappings

Ensure that the URL listed for the Default Zone is the URL of your site, not the Windows Name of your Site’s server.  If it is not, edit it (Click on the linked URL name).

Hope this helps you.


Tags: , , , , , , , , , ,
Posted in Sharepoint | No Comments »

Diş Polikliniği Uygulaması

Aralık 10th, 2010

Bir arkadaş için hazırlamaya başladığım ama iş yoğunluğu sebebiyle bitiremediğim bir proje bu. Aşağıda hazırladığım kısımların ekran görüntülerini, kaynak kodlarını ve çalışır haldeki durumunu bulabilirsiniz. Kodu indirip devam edecekler bana bir mail gönderip durumu bildirirlerse sevinirim :) Aynı zamanda bitirebilen olursa, bitmiş halini de görmek isterim.

Bulunan Özellikler :

Doktor İşlemleri :

  • Doktor Kaydetme
  • Doktor Silme
  • Doktor Güncelleme
  • Doktor Anlaşma Bilgileri Kaydı
  • Doktor Bakiye Bilgileri
  • Doktor Son Hesap Hareketleri
  • Fotoğraf Çekme / Düzenleme / Silme
  • Doktor Arama (İsim ve TC Kimlik No kriterleri ile)

    Hasta İşlemleri :

  • Hasta Kaydetme
  • Hasta Silme
  • Hasta Güncelleme
  • Hasta Sağlık Bilgileri Kaydı
  • Hastaya Ait Röntgen/Dosya Yükleme
  • Hasta Ödeme Kaydı
  • Randevu Kaydı
  • Randevu Alma
  • Hastanın Son Tedavileri
  • Hasta Fotoğrafı Çekme / Düzenleme / Silme
  • Hasta Arama (İsim ve TC Kimlik No Kriterleri ile)

    Malzeme İşlemleri

  • Malzeme Kaydı
  • Malzeme Arama (İsim ve Tutar Aralığı Kriterleri ile)

    Gün Sonu İşlemleri

  • Her gün bitiminde o günkü kazanılan/harcanılan tutarların Kasaya aktarılması için kullanılır. Bu sırada Doktorlara, anlaşma türüne göre ödemeler dağıtılır.
    Örneğin; Doktor o gün 1000 TL lik kazanç sağlamışsa ve anlaşması %40 ise, 400 TL Doktora, 600 TL Polikliğe gidecek şekilde dağıtımı yapılır.
  • Tüm İşlemler ise, o güne kadar atlanmış olan tüm hareketlerin (sadece yapılmamış olanların) Kasa hareketinin yapılmasını sağlar.

    Kasa Ekranı

  • Bugün, Dün, Bu Hafta, Bu Ay, Tarih Aralığı ve Tüm Zamanlar kriterlerine göre yapılan tüm kasa hareketlerinin gösterimini sağlar.

    Ana Ekran

  • Ana ekranda,
    • Doktor Listesi
    • Bu Saat İçinde Randevusu Olanların Listesi
    • Gelecek Saat Randevusu Olanların Listesi
    • Takvim Seçeneği
    • Randevu Durumu
    • Günlük Kasa Durumu
    • Genel Kasa Durumu gibi parçalar bulunmaktadır.
  • Doktor Listesi ve Tarih kriterlerinden seçilenlere göre, seçilmemişse o anki tarih ve tüm doktorlara göre, Randevu Durumu, Günlük Kasa Durumu ve Genel Kasa Durumu ekranları doldurulur. Bu sayede çoklu polikliniklerde çok rahat filtreleme imkanı sağlanmış olur.
  • Randevu Durumu Alanında o gün içerisindeki (Farklı bir tarih seçilmemiş ise) tüm randevular listelenir.
  • Randevu Durumu Alanında, belirli bir randevu üzerine sağ tıklandığında,
    • Tedaviyi Tamamla
    • Randevuyu Güncelle
    • Randevuya Gelinmedi
    • Randevuyu Sil

    Seçenekleri mevcuttur.

    Tedaviyi Tamamla Ekranında

    • Belirtilen randevu ile ilgili olarak, Hasta Adı, Hekim Adı, Randevu Tarihi ve Süresi ve Randevu Durumu bilgileri bulunur.
    • Tahsilat işlemleri kısmına, Hastaya uygulanan tedavi ve Ödeme Bilgileri girilip, İşlemi Yap ile kayıt altına alınır.
    • Yeni Randevu Ayarla kısmında ise, aynı hastaya yeni bir randevu alınır. Hastanın tedavisi tamamlanmışsa, yeni randevu alınmayacaksa burada bir işlem yapılmaz. Tekrar aynı hasta için randevu alınmak istenirse Hasta Ekranında, ilgili hasta bulunup, Randevu ekranından tekrardan randevu alınabilir.

    Randevuyu Güncelle Ekranında

    • Belirtilen randevu ile ilgili olarak, Hasta Adı, Hekim Adı, Randevu Tarihi ve Süresi ve Randevu Durumu bilgileri bulunur.
    • Yeni Randevu bilgileri girilip, Randevuyu Güncelleye tıklanır. Bu işlem ile eski randevu bilgileri güncellenecektir.

Uygulama İle İlgili Ekran Görüntüleri:

Doktor İşlemleri





Hasta İşlemleri








Ana Ekran





Tedaviyi Tamamla Ekranı




Randevu Güncelle Ekranı



Malzeme İşlemleri Ekranı



Gün Sonu Ekranı


Kasa Ekranı



Database Tablolarının Create Scriptleri :

Anlasmalar Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[Anlasmalar] Script Date: 12/10/2010 13:40:39 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Anlasmalar](

[ID] [int] IDENTITY(1,1) NOT NULL,

[HekimID] [int] NULL,

[Tip] [int] NULL,

[Yuzde] [int] NULL,

[Tutar] [int] NULL,

[Maas] [int] NULL,

CONSTRAINT [PK_Anlasmalar] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

EXEC sys.sp_addextendedproperty @name=N’MS_Description’, @value=N’0 – Maaşlı, 1 Anlaşmalı’ , @level0type=N’SCHEMA’,@level0name=N’dbo’, @level1type=N’TABLE’,@level1name=N’Anlasmalar’

GO

Dosyalar Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[Dosyalar] Script Date: 12/10/2010 13:41:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Dosyalar](

[ID] [int] IDENTITY(1,1) NOT NULL,

[FileName] [varchar](max) NULL,

[HastaID] [int] NULL,

[CopyFileName] [varchar](max) NULL,

[Silindi] [int] NULL,

[EklenmeTarihi] [datetime] NULL,

CONSTRAINT [PK_Dosyalar] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

Hastalar Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[Hastalar] Script Date: 12/10/2010 13:41:25 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Hastalar](

[ID] [int] IDENTITY(1,1) NOT NULL,

[KayitTarihi] [datetime] NULL,

[Adi] [varchar](max) NULL,

[Soyadi] [varchar](max) NULL,

[Unvan] [varchar](max) NULL,

[Il] [varchar](max) NULL,

[Ilce] [varchar](max) NULL,

[TcKimlikNo] [varchar](max) NULL,

[IletisimTelefonu] [varchar](max) NULL,

[EvTelefonu] [varchar](max) NULL,

[CepTelefonu] [varchar](max) NULL,

[MailAdresi] [varchar](max) NULL,

[WebAdresi] [varchar](max) NULL,

[Fax] [varchar](max) NULL,

[Adres] [varchar](max) NULL,

[Not1] [varchar](max) NULL,

[Not2] [varchar](max) NULL,

[Silindi] [int] NULL,

[Resim] [varchar](max) NULL,

CONSTRAINT [PK_Hastalar] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

HastalikDurum Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[HastalikDurum] Script Date: 12/10/2010 13:41:50 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[HastalikDurum](

[ID] [int] IDENTITY(1,1) NOT NULL,

[HastaID] [int] NULL,

[Hastalik] [varchar](max) NULL,

CONSTRAINT [PK_HastalikDurum] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

Hastaliklar Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[Hastaliklar] Script Date: 12/10/2010 13:42:09 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Hastaliklar](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Hastalik] [varchar](max) NULL,

CONSTRAINT [PK_Hastaliklar] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

Hekimler Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[Hekimler] Script Date: 12/10/2010 13:42:26 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Hekimler](

[ID] [int] IDENTITY(1,1) NOT NULL,

[KayitTarihi] [datetime] NULL,

[Unvan] [varchar](max) NULL,

[Adi] [varchar](max) NULL,

[Soyadi] [varchar](max) NULL,

[Adres] [varchar](max) NULL,

[Il] [varchar](max) NULL,

[Ilce] [varchar](max) NULL,

[Telefon1] [varchar](max) NULL,

[Fax] [varchar](max) NULL,

[DoktorTipID] [int] NULL,

[EvTelefonu] [varchar](max) NULL,

[CepTelefonu] [varchar](max) NULL,

[Not1] [varchar](max) NULL,

[Not2] [varchar](max) NULL,

[Mail] [varchar](max) NULL,

[Web] [varchar](max) NULL,

[TcKimlikNo] [varchar](11) NULL,

[Silindi] [int] NULL,

[Resim] [varchar](max) NULL,

[IBAN] [varchar](max) NULL,

CONSTRAINT [PK_Hekimler] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

Kasa Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[Kasa] Script Date: 12/10/2010 13:42:39 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Kasa](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Tip] [int] NULL,

[GelirKaynakID] [int] NULL,

[GelirKaynak] [varchar](max) NULL,

[GiderKaynakID] [int] NULL,

[GiderKaynak] [varchar](max) NULL,

[Tutar] [int] NULL,

[IslemTarihi] [datetime] NULL,

CONSTRAINT [PK_Kasa] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

EXEC sys.sp_addextendedproperty @name=N’MS_Description’, @value=N’Gelir 0 – Gider 1′ , @level0type=N’SCHEMA’,@level0name=N’dbo’, @level1type=N’TABLE’,@level1name=N’Kasa’, @level2type=N’COLUMN’,@level2name=N’Tip’

GO

MalzemeKaydi Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[MalzemeKaydi] Script Date: 12/10/2010 13:43:01 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[MalzemeKaydi](

[ID] [int] IDENTITY(1,1) NOT NULL,

[Malzeme] [varchar](max) NULL,

[Tutar] [int] NULL,

[Adet] [int] NULL,

[Durum] [int] NULL,

[IslemTarihi] [datetime] NULL,

CONSTRAINT [PK_MalzemeKaydi] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

Ödemeler Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[Odemeler] Script Date: 12/10/2010 13:46:06 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Odemeler](

[ID] [int] IDENTITY(1,1) NOT NULL,

[DoktorID] [int] NULL,

[HastaID] [int] NULL,

[Tutar] [int] NULL,

[Islem] [varchar](max) NULL,

[Durum] [int] NULL,

[IslemTarihi] [datetime] NULL,

CONSTRAINT [PK_Odemeler] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

Randevular Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[Randevular] Script Date: 12/10/2010 13:46:38 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[Randevular](

[ID] [int] IDENTITY(1,1) NOT NULL,

[HastaID] [int] NULL,

[HekimID] [int] NULL,

[TarihSaat] [datetime] NULL,

[Sure] [int] NULL,

[Durum] [varchar](max) NULL,

[Silindi] [int] NULL,

[YapilanTedavi] [varchar](max) NULL,

CONSTRAINT [PK_Randevular] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

SQLConnections Tablosu

USE [DentalSoft]

GO

/****** Object: Table [dbo].[SQLConnections] Script Date: 12/10/2010 13:46:56 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[SQLConnections](

[ID] [int] IDENTITY(1,1) NOT NULL,

[DataSource] [varchar](max) NULL,

[InitialCatalog] [varchar](max) NULL,

[PersistSecurityInfo] [varchar](max) NULL,

[UserID] [varchar](max) NULL,

[Password] [varchar](max) NULL,

[ConnectionName] [varchar](max) NULL,

CONSTRAINT [PK_SQLConnections] PRIMARY KEY CLUSTERED

(

[ID] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

Kaynak Kodlar

Publish Edilmiş Hali

Kaynak Kod – Source Kod

Tags: , , , , , , , , , , , , , ,
Posted in Bilgisayar, internet, Program, Yazılım | 2 Comments »