• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

m00j

اعضاء
  • عدد المشاركات

    174
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

2 عادي

عن m00j

  • الرتبة
    عضو

طرق الإتصال

  • ICQ 0
  1. السلام عليكم ..   يا جماعة انا ما اعرف الا القليل جدا في php وعندي مشكلة حاولت احلها بس والله ما نجحت لحد الحين وهي:   ان اتجاه الصفحة يظهر من اليمين لليسار وهذا جيد ولكن المشكلة عند تصدير الصفحة لملف وورد يتغير الاتجاه فيصبح من اليسار لليمين !! جربت واضفت dir= rtl في اكثر من مكان في بس ما نجحت يا ليت تفيدوني وين اضفيك الكود او عن حل بديل وشكرا. <?php @ini_set("display_errors","1");@ini_set("display_startup_errors","1");include("include/dbcommon.php");include("classes/searchclause.php");include("classes/sql.php");session_cache_limiter("none");include("include/employees_variables.php");if(!CheckTablePermissions($strTableName, "P")) HeaderRedirect("menu");$layout = new TLayout("export2", "MetroCity", "MobileCity");$layout->version = 2;$layout->blocks["top"] = array();$layout->containers["export"] = array();$layout->containers["export"][] = array("name"=>"exportheader", "block"=>"", "substyle"=>2 );$layout->containers["export"][] = array("name"=>"wrapper", "block"=>"", "substyle"=>1 , "container"=>"range" );$layout->containers["range"] = array();$layout->containers["range"][] = array("name"=>"exprange", "block"=>"range_block", "substyle"=>1 );$layout->skins["range"] = "fields";$layout->containers["export"][] = array("name"=>"wrapper", "block"=>"", "substyle"=>1 , "container"=>"fields" );$layout->containers["fields"] = array();$layout->containers["fields"][] = array("name"=>"expoutput", "block"=>"", "substyle"=>1 );$layout->skins["fields"] = "fields";$layout->containers["export"][] = array("name"=>"expbuttons", "block"=>"", "substyle"=>2 );$layout->skins["export"] = "1";$layout->blocks["top"][] = "export";$page_layouts["employees_export"] = $layout;$layout->skinsparams = array();$layout->skinsparams["empty"] = array("button"=>"button1");$layout->skinsparams["menu"] = array("button"=>"button1");$layout->skinsparams["hmenu"] = array("button"=>"button1");$layout->skinsparams["undermenu"] = array("button"=>"button1");$layout->skinsparams["fields"] = array("button"=>"button1");$layout->skinsparams["form"] = array("button"=>"button1");$layout->skinsparams["1"] = array("button"=>"button1");$layout->skinsparams["2"] = array("button"=>"button1");$layout->skinsparams["3"] = array("button"=>"button1");// Modify query: remove blob fields from fieldlist.// Blob fields on an export page are shown using imager.php (for example).// They don't need to be selected from DB in export.php itself.//$gQuery->ReplaceFieldsWithDummies(GetBinaryFieldsIndices());$cipherer = new RunnerCipherer($strTableName);$strWhereClause = "";$strHavingClause = "";$strSearchCriteria = "and";$selected_recs = array();$options = "1";header("Expires: Thu, 01 Jan 1970 00:00:01 GMT"); include('include/xtempl.php');include('classes/runnerpage.php');$xt = new Xtempl();$id = postvalue("id") != "" ? postvalue("id") : 1;$phpVersion = (int)substr(phpversion(), 0, 1); if($phpVersion > 4){ include("include/export_functions.php"); $xt->assign("groupExcel", true);}else $xt->assign("excel", true);//array of params for classes$params = array("pageType" => PAGE_EXPORT, "id" => $id, "tName" => $strTableName);$params["xt"] = &$xt;if(!$eventObj->exists("ListGetRowCount") && !$eventObj->exists("ListQuery")) $params["needSearchClauseObj"] = false;$pageObject = new RunnerPage($params);$pageObject->init();// Before Process eventif($eventObj->exists("BeforeProcessExport")) $eventObj->BeforeProcessExport($conn, $pageObject);if (@$_REQUEST["a"]!=""){ $options = ""; $sWhere = "1=0"; // process selection $selected_recs = array(); if (@$_REQUEST["mdelete"]) { foreach(@$_REQUEST["mdelete"] as $ind) { $keys=array(); $keys["emp_no"] = refine($_REQUEST["mdelete1"][mdeleteIndex($ind)]); $selected_recs[] = $keys; } } elseif(@$_REQUEST["selection"]) { foreach(@$_REQUEST["selection"] as $keyblock) { $arr=explode("&",refine($keyblock)); if(count($arr)<1) continue; $keys = array(); $keys["emp_no"] = urldecode($arr[0]); $selected_recs[] = $keys; } } foreach($selected_recs as $keys) { $sWhere = $sWhere . " or "; $sWhere.=KeyWhere($keys); } $strSQL = $gQuery->gSQLWhere($sWhere); $strWhereClause=$sWhere; $_SESSION[$strTableName."_SelectedSQL"] = $strSQL; $_SESSION[$strTableName."_SelectedWhere"] = $sWhere; $_SESSION[$strTableName."_SelectedRecords"] = $selected_recs;}if ($_SESSION[$strTableName."_SelectedSQL"]!="" && @$_REQUEST["records"]=="") { $strSQL = $_SESSION[$strTableName."_SelectedSQL"]; $strWhereClause = @$_SESSION[$strTableName."_SelectedWhere"]; $selected_recs = $_SESSION[$strTableName."_SelectedRecords"];}else{ $strWhereClause = @$_SESSION[$strTableName."_where"]; $strHavingClause = @$_SESSION[$strTableName."_having"]; $strSearchCriteria = @$_SESSION[$strTableName."_criteria"]; $joinFromPart = @$_SESSION[$strTableName."_joinFromPart"]; //$strSQL = $gQuery->gSQLWhere($strWhereClause, $strHavingClause, $strSearchCriteria); $strSQL = SQLQuery::gSQLWhere_having($gQuery->HeadToSql(), $gQuery->FromToSql().$joinFromPart, $gQuery->WhereToSql(), $gQuery->GroupByToSql(), $gQuery->Having()->toSql($gQuery), $strWhereClause, $strHavingClause, $strSearchCriteria); }$mypage = 1;if(@$_REQUEST["type"]){// order by $strOrderBy = $_SESSION[$strTableName."_order"]; if(!$strOrderBy) $strOrderBy = $gstrOrderBy; $strSQL.=" ".trim($strOrderBy); $strSQLbak = $strSQL; if($eventObj->exists("BeforeQueryExport")) $eventObj->BeforeQueryExport($strSQL,$strWhereClause,$strOrderBy, $pageObject);// Rebuild SQL if needed if($strSQL!=$strSQLbak) {// changed $strSQL - old style $numrows=GetRowCount($strSQL); } else { //$strSQL = $gQuery->gSQLWhere($strWhereClause, $strHavingClause, $strSearchCriteria); $strSQL = SQLQuery::gSQLWhere_having($gQuery->HeadToSql(), $gQuery->FromToSql().$joinFromPart, $gQuery->WhereToSql(), $gQuery->GroupByToSql(), $gQuery->Having()->toSql($gQuery), $strWhereClause, $strHavingClause, $strSearchCriteria); $strSQL.=" ".trim($strOrderBy); $rowcount=false; if($eventObj->exists("ListGetRowCount")) { $masterKeysReq=array(); for($i = 0; $i < count($pageObject->detailKeysByM); $i ++) $masterKeysReq[] = $_SESSION[$strTableName."_masterkey".($i + 1)]; $rowcount = $eventObj->ListGetRowCount($pageObject->searchClauseObj,$_SESSION[$strTableName."_mastertable"],$masterKeysReq,$selected_recs, $pageObject); } if($rowcount !== false) $numrows = $rowcount; else { //$numrows = $gQuery->gSQLRowCount($strWhereClause,$strHavingClause,$strSearchCriteria); $numrows = SQLQuery::gSQLRowCount_int($gQuery->HeadToSql(), $gQuery->FromToSql().$joinFromPart, $gQuery->WhereToSql(), $gQuery->GroupByToSql(), $gQuery->Having()->toSql($gQuery), $strWhereClause, $strHavingClause, $strSearchCriteria); } } LogInfo($strSQL);// Pagination: $nPageSize = 0; if(@$_REQUEST["records"]=="page" && $numrows) { $mypage = (integer)@$_SESSION[$strTableName."_pagenumber"]; $nPageSize = (integer)@$_SESSION[$strTableName."_pagesize"]; if(!$nPageSize) $nPageSize = $gSettings->getInitialPageSize(); if($nPageSize<0) $nPageSize = 0; if($nPageSize>0) { if($numrows<=($mypage-1)*$nPageSize) $mypage = ceil($numrows/$nPageSize); if(!$mypage) $mypage = 1; $strSQL.=" limit ".(($mypage-1)*$nPageSize).",".$nPageSize; } } $listarray = null; if($eventObj->exists("ListQuery")) { $arrFieldForSort = array(); $arrHowFieldSort = array(); require_once getabspath('classes/orderclause.php'); $fieldList = unserialize($_SESSION[$strTableName."_orderFieldsList"]); for($i = 0; $i < count($fieldList); $i++) { $arrFieldForSort[] = $fieldList[$i]->fieldIndex; $arrHowFieldSort[] = $fieldList[$i]->orderDirection; } $listarray = $eventObj->ListQuery($pageObject->searchClauseObj, $arrFieldForSort, $arrHowFieldSort, $_SESSION[$strTableName."_mastertable"], $masterKeysReq, $selected_recs, $nPageSize, $mypage, $pageObject); } if($listarray != null) { $rs = $listarray; } elseif($nPageSize>0) { $rs = db_query($strSQL,$conn); } else $rs = db_query($strSQL,$conn); if(!ini_get("safe_mode")) set_time_limit(300); if(substr(@$_REQUEST["type"],0,5)=="excel") {// remove grouping $locale_info["LOCALE_SGROUPING"]="0"; $locale_info["LOCALE_SMONGROUPING"]="0"; if($phpVersion > 4) ExportToExcel($rs, $nPageSize, $eventObj, $cipherer, $pageObject); else ExportToExcel_old($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject); } else if(@$_REQUEST["type"]=="word") { ExportToWord($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject); } else if(@$_REQUEST["type"]=="xml") { ExportToXML($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject); } else if(@$_REQUEST["type"]=="csv") { $locale_info["LOCALE_SGROUPING"]="0"; $locale_info["LOCALE_SDECIMAL"]="."; $locale_info["LOCALE_SMONGROUPING"]="0"; $locale_info["LOCALE_SMONDECIMALSEP"]="."; ExportToCSV($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject); } db_close($conn); return;}// add button events if exist$pageObject->addButtonHandlers();if($options){ $xt->assign("rangeheader_block",true); $xt->assign("range_block",true);}$xt->assign("exportlink_attrs", 'id="saveButton'.$pageObject->id.'"');$pageObject->body["begin"] .= GetBaseScriptsForPage(false);$pageObject->fillSetCntrlMaps();$pageObject->body['end'] .= '<script>';$pageObject->body['end'] .= "window.controlsMap = ".my_json_encode($pageObject->controlsHTMLMap).";";$pageObject->body['end'] .= "window.viewControlsMap = ".my_json_encode($pageObject->viewControlsHTMLMap).";";$pageObject->body['end'] .= "window.settings = ".my_json_encode($pageObject->jsSettings).";";$pageObject->body['end'] .= '</script>';$pageObject->body["end"] .= "<script language=\"JavaScript\" src=\"".GetRootPathForResources("include/runnerJS/RunnerAll.js")."\"></script>\r\n";$pageObject->addCommonJs();$pageObject->body["end"] .= "<script>".$pageObject->PrepareJS()."</script>";$xt->assignbyref("body",$pageObject->body);$pageObject->display(GetTemplateName("employees", "export"));$table["direction"] = "rtl";function ExportToExcel_old($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject){ global $cCharset; header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment;Filename=".GetTableURL($strTableName).".xls"); echo "<html>"; echo "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns=\"http://www.w3.org/TR/REC-html40\">"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=".$cCharset."\">"; echo "<body>"; echo "<table border=1>"; WriteTableData($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject); echo "</table>"; echo "</body>"; echo "</html>";}function ExportToWord($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject){ global $cCharset; header("Content-Type: application/vnd.ms-word"); header("Content-Disposition: attachment;Filename=".GetTableURL($strTableName).".doc"); echo "<html>"; echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=".$cCharset."\">"; echo "<body>"; echo "<table border=1>"; WriteTableData($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject); echo "</table>"; echo "</body>"; echo "</html>";}function ExportToXML($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject){ global $cCharset; header("Content-Type: text/xml"); header("Content-Disposition: attachment;Filename=".GetTableURL($strTableName).".xml"); if($eventObj->exists("ListFetchArray")) $row = $eventObj->ListFetchArray($rs, $pageObject); else $row = $cipherer->DecryptFetchedArray($rs); //if(!$row) // return; echo "<?xml version=\"1.0\" encoding=\"".$cCharset."\" standalone=\"yes\"?>\r\n"; echo "<table>\r\n"; $i = 0; $pageObject->viewControls->forExport = "xml"; while((!$nPageSize || $i<$nPageSize) && $row) { $values = array(); $values["emp_no"] = $pageObject->getExportValue("emp_no", $row); $values["birth_date"] = $pageObject->getExportValue("birth_date", $row); $values["first_name"] = $pageObject->getExportValue("first_name", $row); $values["last_name"] = $pageObject->getExportValue("last_name", $row); $values["gender"] = $pageObject->getExportValue("gender", $row); $values["hire_date"] = $pageObject->getExportValue("hire_date", $row); $eventRes = true; if ($eventObj->exists('BeforeOut')) $eventRes = $eventObj->BeforeOut($row, $values, $pageObject); if ($eventRes) { $i++; echo "<row>\r\n"; foreach ($values as $fName => $val) { $field = runner_htmlspecialchars(XMLNameEncode($fName)); echo "<".$field.">"; echo $values[$fName]; echo "</".$field.">\r\n"; } echo "</row>\r\n"; } if($eventObj->exists("ListFetchArray")) $row = $eventObj->ListFetchArray($rs, $pageObject); else $row = $cipherer->DecryptFetchedArray($rs); } echo "</table>\r\n";}function ExportToCSV($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject){ header("Content-Type: application/csv"); header("Content-Disposition: attachment;Filename=".GetTableURL($strTableName).".csv"); echo "\xEF\xBB\xBF"; if($eventObj->exists("ListFetchArray")) $row = $eventObj->ListFetchArray($rs, $pageObject); else $row = $cipherer->DecryptFetchedArray($rs);// write header $outstr = ""; if($outstr!="") $outstr.=","; $outstr.= "\"emp_no\""; if($outstr!="") $outstr.=","; $outstr.= "\"birth_date\""; if($outstr!="") $outstr.=","; $outstr.= "\"first_name\""; if($outstr!="") $outstr.=","; $outstr.= "\"last_name\""; if($outstr!="") $outstr.=","; $outstr.= "\"gender\""; if($outstr!="") $outstr.=","; $outstr.= "\"hire_date\""; echo $outstr; echo "\r\n";// write data rows $iNumberOfRows = 0; $pageObject->viewControls->forExport = "csv"; while((!$nPageSize || $iNumberOfRows < $nPageSize) && $row) { $values = array(); $values["emp_no"] = $pageObject->getViewControl("emp_no")->getExportValue($row, ""); $values["birth_date"] = $pageObject->getViewControl("birth_date")->getExportValue($row, ""); $values["first_name"] = $pageObject->getViewControl("first_name")->getExportValue($row, ""); $values["last_name"] = $pageObject->getViewControl("last_name")->getExportValue($row, ""); $values["gender"] = $pageObject->getViewControl("gender")->getExportValue($row, ""); $values["hire_date"] = $pageObject->getViewControl("hire_date")->getExportValue($row, ""); $eventRes = true; if ($eventObj->exists('BeforeOut')) { $eventRes = $eventObj->BeforeOut($row,$values, $pageObject); } if ($eventRes) { $outstr=""; if($outstr!="") $outstr.=","; $outstr.='"'.str_replace('"', '""', $values["emp_no"]).'"'; if($outstr!="") $outstr.=","; $outstr.='"'.str_replace('"', '""', $values["birth_date"]).'"'; if($outstr!="") $outstr.=","; $outstr.='"'.str_replace('"', '""', $values["first_name"]).'"'; if($outstr!="") $outstr.=","; $outstr.='"'.str_replace('"', '""', $values["last_name"]).'"'; if($outstr!="") $outstr.=","; $outstr.='"'.str_replace('"', '""', $values["gender"]).'"'; if($outstr!="") $outstr.=","; $outstr.='"'.str_replace('"', '""', $values["hire_date"]).'"'; echo $outstr; } $iNumberOfRows++; if($eventObj->exists("ListFetchArray")) $row = $eventObj->ListFetchArray($rs, $pageObject); else $row = $cipherer->DecryptFetchedArray($rs); if(((!$nPageSize || $iNumberOfRows<$nPageSize) && $row) && $eventRes) echo "\r\n"; }}function WriteTableData($rs, $nPageSize, $strTableName, $eventObj, $cipherer, $pageObject){ if($eventObj->exists("ListFetchArray")) $row = $eventObj->ListFetchArray($rs, $pageObject); else $row = $cipherer->DecryptFetchedArray($rs);// if(!$row)// return;// write header echo "<tr>"; if($_REQUEST["type"]=="excel") { echo '<td style="width: 100" x:str>'.PrepareForExcel(GetFieldLabel("employees","emp_no")).'</td>'; echo '<td style="width: 100" x:str>'.PrepareForExcel(GetFieldLabel("employees","birth_date")).'</td>'; echo '<td style="width: 100" x:str>'.PrepareForExcel(GetFieldLabel("employees","first_name")).'</td>'; echo '<td style="width: 100" x:str>'.PrepareForExcel(GetFieldLabel("employees","last_name")).'</td>'; echo '<td style="width: 100" x:str>'.PrepareForExcel(GetFieldLabel("employees","gender")).'</td>'; echo '<td style="width: 100" x:str>'.PrepareForExcel(GetFieldLabel("employees","hire_date")).'</td>'; } else { echo "<td>".GetFieldLabel("employees","emp_no")."</td>"; echo "<td>".GetFieldLabel("employees","birth_date")."</td>"; echo "<td>".GetFieldLabel("employees","first_name")."</td>"; echo "<td>".GetFieldLabel("employees","last_name")."</td>"; echo "<td>".GetFieldLabel("employees","gender")."</td>"; echo "<td>".GetFieldLabel("employees","hire_date")."</td>"; } echo "</tr>"; // write data rows $iNumberOfRows = 0; $pageObject->viewControls->forExport = "export"; while((!$nPageSize || $iNumberOfRows<$nPageSize) && $row) { countTotals($totals, $totalsFields, $row); $values = array(); $values["emp_no"] = $pageObject->getViewControl("emp_no")->getExportValue($row, ""); $values["birth_date"] = $pageObject->getViewControl("birth_date")->getExportValue($row, ""); $values["first_name"] = $pageObject->getViewControl("first_name")->getExportValue($row, ""); $values["last_name"] = $pageObject->getViewControl("last_name")->getExportValue($row, ""); $values["gender"] = $pageObject->getViewControl("gender")->getExportValue($row, ""); $values["hire_date"] = $pageObject->getViewControl("hire_date")->getExportValue($row, ""); $eventRes = true; if ($eventObj->exists('BeforeOut')) { $eventRes = $eventObj->BeforeOut($row, $values, $pageObject); } if ($eventRes) { $iNumberOfRows++; echo "<tr>"; echo '<td>'; echo $values["emp_no"]; echo '</td>'; echo '<td>'; if($_REQUEST["type"]=="excel") echo PrepareForExcel($values["birth_date"]); else echo $values["birth_date"]; echo '</td>'; if($_REQUEST["type"]=="excel") echo '<td x:str>'; else echo '<td>'; if($_REQUEST["type"]=="excel") echo PrepareForExcel($values["first_name"]); else echo $values["first_name"]; echo '</td>'; if($_REQUEST["type"]=="excel") echo '<td x:str>'; else echo '<td>'; if($_REQUEST["type"]=="excel") echo PrepareForExcel($values["last_name"]); else echo $values["last_name"]; echo '</td>'; if($_REQUEST["type"]=="excel") echo '<td x:str>'; else echo '<td>'; if($_REQUEST["type"]=="excel") echo PrepareForExcel($values["gender"]); else echo $values["gender"]; echo '</td>'; echo '<td>'; if($_REQUEST["type"]=="excel") echo PrepareForExcel($values["hire_date"]); else echo $values["hire_date"]; echo '</td>'; echo "</tr>"; } if($eventObj->exists("ListFetchArray")) $row = $eventObj->ListFetchArray($rs, $pageObject); else $row = $cipherer->DecryptFetchedArray($rs); } }?>
  2. السلام عليكم سؤالي هو : هل يمكن بناء استعلام مصدره جدولين بحيث يعمل تجميع على حقل معين ويخفي قيمة المكررة في نفس الوقت آمل ان تكون الفكرة واضحة. في المثال المرفق التجميع بناء على حقل اسم الشركة وكما هو ظاهر اسم الشركة في مكرر . كيف عملها ؟؟
  3. بسم الله  السلام عليكم ورحمة الله وبركاته   يا اخوان بكل صراحة لا افقه شيء في لغة php يعني طولو بالكم علي :)   انا جربت اعمل صفحة بيانات فيها جدول رئيسي وجدول فرعي مرتبط طبعا بدون ما اكتب سطر كود واحد :) بس واجهت مشكلة انه عند عرض سجل رئيسي والسجلات الفرعية التابعة له واختيار ها والنقر على مفتاح التصدير لا يتم تصدير سوى السجلات الفرعية فقط !! هل يمكن تصدير الكل آمل أن أجد عندكم الجواب. لا ادري من أين أبدأ ولكن ارفقت كود صفحة النافقيشن للاطلاع على كود التصدير لعلي اجد حل من خلاله وشكرا لكم جميعا . <?phpdefine('NS_LIST', 1);define('NS_COMBOBOX', 2);class PageNavigatorPage{ private $isCurrent; private $caption; private $page; private $pageNumber; private $prefix; private $linkBuilder; private $hint; private $renderText; private $shortCut = null; function __construct($page, $caption, $pageNumber, $isCurrent, $linkBuilder, $prefix = '', $hint = '', $renderText=true) { $this->page = $page; $this->caption = $caption; $this->isCurrent = $isCurrent; $this->pageNumber = $pageNumber; $this->prefix = $prefix; $this->linkBuilder = $linkBuilder; $this->hint = $hint; $this->renderText = $renderText; } public function HasShortCut() { return isset($this->shortCut) && !is_null($this->shortCut); } public function GetShortCut() { return $this->shortCut; } public function SetShortCut($value) { $this->shortCut = $value; } function GetHint() { return $this->renderText ? $this->page->RenderText($this->hint) : $this->hint; } function GetPage() { return $this->page; } function IsCurrent() { return $this->isCurrent; } function GetPageCaption() { return $this->renderText ? $this->page->RenderText($this->caption) : $this->caption; } function GetPageLink() { $result = $this->linkBuilder; if (isset($this->pageNumber)) $result->AddParameter($this->prefix . 'page', $this->pageNumber); else $result->RemoveParameter($this->prefix . 'page'); return $result->GetLink(); }}class BasePageNavigator{ function __construct() { } function AddCurrentPageParameters(&$linkBuilder) { } function ProcessMessages() { } function Accept($Renderer) { }}class AbstractPageNavigator{ private $page; private $dataset; private $name; private $pages; private $prefix; private $caption; private $pagaNavigatorList; private $currentPageNumber; private $ignorePageNavigationOperations = array( OPERATION_PRINT_ALL //, OPERATION_EXCEL_EXPORT //, OPERATION_WORD_EXPORT //, OPERATION_XML_EXPORT //, OPERATION_CSV_EXPORT //, OPERATION_PDF_EXPORT ); function __construct($name, $page, $dataset, $caption, $pagaNavigatorList, $prefix = null) { $this->name = $name; $this->page = $page; $this->dataset = $dataset; $this->pages = array(); $this->prefix = isset($prefix) ? $prefix : $name; $this->caption = $caption; $this->pages = null; $this->pagaNavigatorList = $pagaNavigatorList; } function GetName() { return $this->name; } function GetPagaNavigatorList() { return $this->pagaNavigatorList; } function GetPage() { return $this->page; } function GetCaption() { return $this->caption; } function CurrentPageNumber() { return $this->currentPageNumber; } function GetPrefix() { return $this->prefix; } function GetPages() { assert(isset($this->pages)); return $this->pages; } function ApplyPageToDataset($currentPageNumber, $dataset) { } function FillPages(&$pages, $currentPage, $linkBuilder) { } function HasSetPageRequest() { return GetApplication()->IsGETValueSet($this->prefix . 'page'); } function GetPageFromRequest() { return GetApplication()->GetGETValue($this->prefix . 'page'); } function NeedResetPage() { return (!GetApplication()->HasPostGetRequestParameters()); } function SessionContainsStoredPage() { return GetApplication()->IsSessionVariableSet($this->prefix . 'page'); } function StorePageToSession() { GetApplication()->SetSessionVariable($this->prefix . 'page', $this->currentPageNumber); } function RestorePageFromSession() { $this->currentPageNumber = GetApplication()->GetSessionVariable($this->prefix . 'page'); } function ResetPageNumber() { GetApplication()->UnSetSessionVariable($this->prefix . 'page'); $this->currentPageNumber = null; } function ProcessMessages() { if ($this->HasSetPageRequest()) { $this->currentPageNumber = $this->GetPageFromRequest(); $this->StorePageToSession(); } elseif (!$this->NeedResetPage() && $this->SessionContainsStoredPage()) { $this->RestorePageFromSession(); } else { $this->ResetPageNumber(); } if (!in_array(GetOperation(), $this->ignorePageNavigationOperations)) { $this->ApplyPageToDataset($this->currentPageNumber, $this->dataset); } } function BuildPages($linkBuilder) { $this->pages = array(); $this->FillPages($this->pages, $this->currentPageNumber, $linkBuilder); } function AddCurrentPageParameters(&$linkBuilder) { $linkBuilder->AddParameter($this->prefix . 'page', $this->CurrentPageNumber()); } function Accept($Renderer) { $Renderer->RenderCustomPageNavigator($this); }}class PageNavigator{ private $name; private $dataset; private $rowsPerPage; private $pageNumber; private $pages; private $page; private $rowCount = null; private $pageCount = null; private $recordsPerPageValues; private $previosPageLink; private $nextPageLink; private $ignorePageNavigationOperations = array(OPERATION_PRINT_ALL, OPERATION_EXCEL_EXPORT, OPERATION_WORD_EXPORT, OPERATION_XML_EXPORT, OPERATION_CSV_EXPORT, OPERATION_PDF_EXPORT); function __construct($name, $page, $Dataset, $defaultRowPerPage = 20, $recordsPerPageValues = null) { $this->name = $name; $this->page = $page; $this->dataset = $Dataset; $this->pageNumber = 0; if ($recordsPerPageValues == null) $this->recordsPerPageValues = array(10,20,50,100,0); else $this->recordsPerPageValues = $recordsPerPageValues; $this->previosPageLink = null; $this->nextPageLink = null; } function GetRecordsPerPageValues() { $result = array(); foreach($this->recordsPerPageValues as $value) $result[$value] = $value == 0 ? 'ALL' : $value; return $result; } public function GetRowsPerPage() { return $this->rowsPerPage; } function SetRowsPerPage($RowsPerPage) { $this->rowsPerPage = $RowsPerPage; $this->defaultRowPerPage = $RowsPerPage; } private function NeedResetPage() { $result = (!GetApplication()->HasPostGetRequestParameters()); return $result; } function ResetPageNumber() { GetApplication()->UnSetSessionVariable('page'); $this->pageNumber = 0; //GetApplication()->UnSetSessionVariable('recperpage'); //$this->rowsPerPage = $this->defaultRowPerPage; } function ProcessMessages() { if (GetApplication()->IsGETValueSet('page')) { $this->pageNumber = GetApplication()->GetGETValue('page') - 1; GetApplication()->SetSessionVariable('page', $this->pageNumber); } elseif (!$this->NeedResetPage() && GetApplication()->IsSessionVariableSet('page')) { $this->pageNumber = GetApplication()->GetSessionVariable('page'); } else { $this->ResetPageNumber(); } if (GetApplication()->IsGETValueSet('recperpage')) { $this->rowsPerPage = GetApplication()->GetGETValue('recperpage'); GetApplication()->SetSessionVariable('recperpage', $this->rowsPerPage); } elseif (GetApplication()->IsSessionVariableSet('recperpage')) { $this->rowsPerPage = GetApplication()->GetSessionVariable('recperpage'); } else $this->rowsPerPage = $this->defaultRowPerPage; if ($this->pageNumber >= $this->GetPageCount()) $this->pageNumber = $this->GetPageCount() - 1; elseif($this->pageNumber < 0) $this->pageNumber = 0; if (!in_array(GetOperation(), $this->ignorePageNavigationOperations)) { if (($this->rowsPerPage != 0) && ($this->GetRowCount() != 0)) { $this->dataset->SetUpLimit($this->pageNumber * $this->rowsPerPage); $this->dataset->SetLimit($this->rowsPerPage); } } } public function GetPageCount() { if (!isset($this->pageCount)) { if ($this->rowsPerPage != 0) { $this->pageCount = floor($this->GetRowCount() / $this->rowsPerPage) + ((floor($this->GetRowCount() / $this->rowsPerPage) == ($this->GetRowCount() / $this->rowsPerPage))? 0 : 1); } else $this->pageCount = 1; } return $this->pageCount; } public function CurrentPageNumber() { return $this->pageNumber + 1; } public function GetRowCount() { if (!isset($this->rowCount)) $this->rowCount = $this->RetrieveRowCount(); return $this->rowCount; } protected function RetrieveRowCount() { return $this->dataset->GetTotalRowCount(); } function GetHintForPage($number, $shortCut = null) { $page = $number - 1; $rowCount = $this->rowCount; $rowsPerPage = $this->rowsPerPage; $startRecord = $page * $rowsPerPage + 1; $endRecord = min(array(($page + 1) * $rowsPerPage, $rowCount)); $result = sprintf($this->page->GetLocalizerCaptions()->GetMessageString('RecordsMtoKFromN'), $startRecord, $endRecord, $rowCount); if (isset($shortCut)) $result .= ";\n" . $shortCut; return $result; } function GetPageCountForPageSize($pageSize) { if ($pageSize != 0) { return floor($this->GetRowCount() / $pageSize) + ((floor($this->GetRowCount() / $pageSize) == ($this->GetRowCount() / $pageSize))? 0 : 1); } else return 1; } function CreateNavigatorPages($currentPage, $pageCount, $linkBuilder) { $nextPages = array(); $prevPages = array(); for($i = $currentPage - 1; $i > max($currentPage - 4, 0); $i--) $prevPages[] = new PageNavigatorPage($this->page, $i, $i, false, $linkBuilder, '', $this->GetHintForPage($i)); if ($currentPage - 10 > 0) $prevPages[] = new PageNavigatorPage($this->page, $currentPage - 10, $currentPage - 10, false, $linkBuilder, '', $this->GetHintForPage($currentPage - 10)); if ($currentPage - 50 > 0) $prevPages[] = new PageNavigatorPage($this->page, $currentPage - 50, $currentPage - 50, false, $linkBuilder, '', $this->GetHintForPage($currentPage - 50)); if ($currentPage - 100 > 0) $prevPages[] = new PageNavigatorPage($this->page, $currentPage - 100, $currentPage - 100, false, $linkBuilder, '', $this->GetHintForPage($currentPage - 100)); if ($currentPage > 1) { $linkBuilder->AddParameter('page', $currentPage - 1); $this->previosPageLink = $linkBuilder->GetLink(); $prevPageLink = new PageNavigatorPage($this->page, '<', $currentPage - 1, false, $linkBuilder, '', $this->GetHintForPage($currentPage - 1, 'Ctrl + left')); $prevPageLink->SetShortCut('Ctrl+left'); $prevPages[] = $prevPageLink; } if ($currentPage - 3 > 1) $prevPages[] = new PageNavigatorPage($this->page, '<< '.$this->page->GetLocalizerCaptions()->GetMessageString('First'), 1, false, $linkBuilder, '', $this->GetHintForPage(1), false); for($i = $currentPage + 1; $i < min($currentPage + 4, $pageCount + 1); $i++) $nextPages[] = new PageNavigatorPage($this->page, $i, $i, false, $linkBuilder, '', $this->GetHintForPage($i)); if ($currentPage + 10 < $pageCount) $nextPages[] = new PageNavigatorPage($this->page, $currentPage + 10, $currentPage + 10, false, $linkBuilder, '', $this->GetHintForPage($currentPage + 10)); if ($currentPage + 50 < $pageCount) $nextPages[] = new PageNavigatorPage($this->page, $currentPage + 50, $currentPage + 50, false, $linkBuilder, '', $this->GetHintForPage($currentPage + 50)); if ($currentPage + 100 < $pageCount) $nextPages[] = new PageNavigatorPage($this->page, $currentPage + 100, $currentPage + 100, false, $linkBuilder, '', $this->GetHintForPage($currentPage + 100)); if ($currentPage < $pageCount) { $linkBuilder->AddParameter('page', $currentPage + 1); $this->nextPageLink = $linkBuilder->GetLink(); $nextPageLink = new PageNavigatorPage($this->page, '>', $currentPage + 1, false, $linkBuilder, '', $this->GetHintForPage($currentPage + 1, 'Ctrl + right')); $nextPageLink->SetShortCut('Ctrl+right'); $nextPages[] = $nextPageLink; } if ($currentPage + 3 < $pageCount) $nextPages[] = new PageNavigatorPage($this->page, $this->page->GetLocalizerCaptions()->GetMessageString('Last') . ' >>', $pageCount, false, $linkBuilder, '', $this->GetHintForPage($pageCount), false); $result = array(); for($i = (count($prevPages) - 1); $i >= 0; $i--) $result[] = $prevPages[$i]; $result[] = new PageNavigatorPage($this->page, $currentPage, $currentPage, true, $linkBuilder, '', $this->GetHintForPage($currentPage)); for($i = 0; $i < count($nextPages); $i++) $result[] = $nextPages[$i]; return $result; } function HasPreviosPage() { return isset($this->previosPageLink); } function HasNextPage() { return isset($this->nextPageLink); } function NextPageLink() { return $this->nextPageLink; } function PreviosPageLink() { return $this->previosPageLink; } function BuildPages($linkBuilder) { $this->pages = array(); $this->FillPages($linkBuilder); } private function FillPages($linkBuilder) { $this->pages = $this->CreateNavigatorPages($this->CurrentPageNumber(), $this->GetPageCount(), $linkBuilder); } public function GetCurrentPageGetParameters() { $result = $this->page->CreateLinkBuilder(); return $result->GetParameters(); } function GetPages() { assert(isset($this->pages)); return $this->pages; } function AddCurrentPageParameters(&$linkBuilder) { $linkBuilder->AddParameter('page', $this->CurrentPageNumber()); } function Accept($Renderer) { $Renderer->RenderPageNavigator($this); }}class CustomPageNavigator extends AbstractPageNavigator{ private $userPartitions; public $OnGetPartitions; public $OnGetPartitionCondition; private $allowViewAllRecords; private $navigationStyle; function __construct($name, $page, $dataset, $caption, $pagaNavigatorList, $prefix = null) { parent::__construct($name, $page, $dataset, $caption, $prefix); $this->OnGetPartitions = new Event(); $this->OnGetPartitionCondition = new Event(); $this->userPartitions = null; $this->allowViewAllRecords = false; $this->navigationStyle = NS_LIST; } function GetPageFromRequest() { if (parent::HasSetPageRequest()) return parent::GetPageFromRequest(); else return null; } function DoOnGetPartitions() { $result = array(); $this->OnGetPartitions->Fire(array(&$result)); return $result; } function DoOnGetPartitionCondition($currentPageNumber) { $condition = ''; $this->OnGetPartitionCondition->Fire(array($currentPageNumber, &$condition)); return $condition; } function FillUserPartitions() { if (!isset($this->userPartitions)) $this->userPartitions = $this->DoOnGetPartitions(); } function FillPages(&$pages, $currentPage, $linkBuilder) { $this->FillUserPartitions(); if (!isset($currentPage) || $currentPage == '') { $userPartitionsKeys = array_keys($this->userPartitions); if ($this->GetAllowViewAllRecords()) $currentPage = null; else $currentPage = $userPartitionsKeys[0]; } if ($this->GetAllowViewAllRecords()) $pages[] = new PageNavigatorPage($this->GetPage(), $this->GetPage()->GetLocalizerCaptions()->GetMessageString('All'), null, $currentPage == null, $linkBuilder, $this->GetPrefix(), '', false); foreach($this->userPartitions as $partitionName => $partitionCaption) $pages[] = new PageNavigatorPage($this->GetPage(), $partitionCaption, $partitionName, ($currentPage != null) && $partitionName == $currentPage, $linkBuilder, $this->GetPrefix()); } function ApplyPageToDataset($currentPageNumber, $dataset) { if (!isset($currentPageNumber) || $currentPageNumber == '') { $this->FillUserPartitions(); $userPartitionsKeys = array_keys($this->userPartitions); if ($this->GetAllowViewAllRecords()) $currentPageNumber = null; else $currentPageNumber = $userPartitionsKeys[0]; } if (isset($currentPageNumber)) { $condition = $this->DoOnGetPartitionCondition($currentPageNumber); if (isset($condition) && $condition != '') $dataset->AddCustomCondition($condition); } } function GetAllowViewAllRecords() { return $this->allowViewAllRecords; } function SetAllowViewAllRecords($value) { $this->allowViewAllRecords = $value; } function GetNavigationStyle() { return $this->navigationStyle; } function SetNavigationStyle($value) { $this->navigationStyle = $value; }}class CompositePageNavigator extends BasePageNavigator{ private $page; private $pageNavigators; function __construct($page) { parent::__construct(); $this->page = $page; $this->pageNavigators = array(); } function AddPageNavigator($pageNavigator) { $this->pageNavigators[] = $pageNavigator; } function AddCurrentPageParameters(&$linkBuilder) { foreach($this->pageNavigators as $pageNavigator) $pageNavigator->AddCurrentPageParameters($linkBuilder); } function CreateLinkBuilder() { return $this->page->CreateLinkBuilder(); } function ProcessMessages() { foreach($this->pageNavigators as $pageNavigator) $pageNavigator->ProcessMessages(); $linkBuilder = $this->CreateLinkBuilder(); foreach($this->pageNavigators as $pageNavigator) { $pageNavigator->AddCurrentPageParameters($linkBuilder); $pageNavigator->BuildPages($linkBuilder->CloneLinkBuilder()); } } function Accept($renderer) { $renderer->RenderCompositePageNavigator($this); } function GetPageNavigators() { return $this->pageNavigators; }}?>لا تخذلوني الله يبارك فيكم ردو على بجواب شافي وافي وجزاكم الله خير :)
  4. شكرا لك اخ محمد على المشاركة وتشرفت بمرورك 
  5. الكتابة تظهر رموز ؟؟

    يمكن يفيدك هذا الشرح بخصوص نفس مشكلتك موفق بإذن الله
  6. السلام عليكم ورحمة الله    انا قليل الخبرة في بناء قواعد البيانات وبودي اعرف ما اهي الاعتبارات العامة اللازم العمل بها عند البدأ ببناء قاعدة بيانات تعمل على موقع    خصائص المشروع: 1- موقع يحتوي على مستخدمين ويحتاج لتسجيل  2- اللغة عربية والبيانات تحتوي على لغة عربية 3- لغة الموقع php 4- توجد مدخلات وتقارير للطباعة   ومن بحثي بالانترنت وجدت انه يجب الانتباه لعملية الترميز بحيث تكون UTF8 حتى تظهر الحروف العربية بشكل صحيح .. مع العلم اني هناك اكثر من 20 نوع من UTF8 اي واحد اختار  :excl: ما نوع Engine المناسب ؟ يوجد اكثر من 15 نوع  :)  أي منهم استخدم وعلى أي اساس؟ يا جماعة ابي كل ما تعرفونه وليس هذين السؤالين بس .     آمل من الجميع المشاركة وعرض تجاربكم ولكم مني الدعاء وجزاكم الله خير
  7. شكرا لك بالفعل هذا ما احتاجه وفقك الله وجزاك خيرا
  8. يوجد مثال من اليوتيوب ومش عارف احوله على MySQL يا ليت احد يقول لي كيف وشكرا  
  9. السلام عليكم عندي مشروع مرتبط بقاعدة بيانات SDF وفيه اكثر من جدول . المهم انه هناك اكثر من جدول وعملت داتاسيت لكل جدول وسحبتها على الفورم بس الغريب هو : انه بعد عمل Debugged لتجربة العمل ,, وجدت أن أحد الفورمات بعد ان اكتب في احد الحقول , لا يعود بالامكان التنقل بين حقول الفورم الأخرى باستخدام Tab ولا حتى بالماوس ولا يمكن استخدام مفتاح اغلاق النموذج , علماً ان الفورم لما يكون فارغ بدون كتابة اي بايانات يقبل التنقل بين الحقول .. حاجة غريبة والله !! ممكن تكون من ايش؟؟ وبعد البحث عن حل في النت ووجدت أحدهم اشار باستخدام ShowDialog عندم طلب فت الفورم ,, وبالفعل لما جربت الحل سمح لي بالتنقل و الكتابة , ولكن لا يزال لا يمكن قفل الفورم باستخدام الزر الاحمر في اعلى الفورم . يا ليت احد يبين لي السبب والحل مشكورين .
  10. السلام عليكم يا ليت أحد يشرح لي هذا الكود سطر سطر وأكون ممنون له :happy: Imports System.Data.SqlServerCe Public Class SQLCEIDHelper ''' <summary> ''' Retrieves the primary key auto-number identity values from SQL CE ''' </summary> ''' <remarks></remarks> Public Shared Sub SetPrimaryKey(ByVal trans As SqlCeTransaction, _ ByVal e As SqlCeRowUpdatedEventArgs) ' If this is an INSERT operation... If e.Status = UpdateStatus.Continue AndAlso _ e.StatementType = StatementType.Insert Then Dim pk = e.Row.Table.PrimaryKey ' and a primary key PK column exists... If pk IsNot Nothing AndAlso pk.Count = 1 Then 'Set up the post-update query to fetch new @@Identity Dim cmdGetIdentity As New SqlCeCommand("SELECT @@IDENTITY", _ CType(trans.Connection, SqlCeConnection), _ trans) 'Execute the command and set the result identity value to the PK e.Row(pk(0)) = CInt(cmdGetIdentity.ExecuteScalar) e.Row.AcceptChanges() End If End If End Sub End Class Namespace MyDatabaseDataSetTableAdapters Partial Public Class CategoriesTableAdapter Private Sub _adapter_RowUpdated(ByVal sender As Object, _ ByVal e As SqlCeRowUpdatedEventArgs) _ Handles _adapter.RowUpdated SQLCEIDHelper.SetPrimaryKey(Me.Transaction, e) End Sub End Class Partial Public Class ProductsTableAdapter Private Sub _adapter_RowUpdated(ByVal sender As Object, _ ByVal e As SqlCeRowUpdatedEventArgs) _ Handles _adapter.RowUpdated SQLCEIDHelper.SetPrimaryKey(Me.Transaction, e) End Sub End Class End Namespace Partial Class MyDatabaseDataSet Partial Class CategoriesDataTable Private Sub CategoriesDataTable_TableNewRow(ByVal sender As Object, _ ByVal e As System.Data.DataTableNewRowEventArgs) _ Handles Me.TableNewRow 'Set defaults so that constraints don't fail when EndEdit is called Dim cat = CType(e.Row, CategoriesRow) cat.CategoryName = "[new]" End Sub End Class Partial Class ProductsDataTable Private Sub ProductsDataTable_TableNewRow(ByVal sender As Object, _ ByVal e As System.Data.DataTableNewRowEventArgs) _ Handles Me.TableNewRow 'Set defaults so that constraints don't fail when EndEdit is called Dim product = CType(e.Row, ProductsRow) product.ProductName = "[new]" End Sub End Class End Class مصدر الكود من هناااااااااااااااااااا وشكرا
  11. كيفية تغير label بالاعتماد على text box

    بتروح على الفورم الثاني وتختار الحدث المناسب لك تلصق هذا السطر: Me.label.text = form1.textbox.text بشرط ان form1 تعمل له Hide مش تقفل وبالتوفيق
  12. يا أخي الفاضل البيانات في كلا الجدولين بتكون جديدة فلا يمكن استخدام ما ذكرته من حل ،، آمل أن أجد حل للمشكلة
  13. أخ أسامة الكلام الي تفضلت بيه صحيح ومفهوم ولكن يوجد حلول ومن أحدها الذي وجدته بعد بحث كم يوم ،، بس الحل معقد شوي ومشكلتي فيه الكود الأخير تحديدا وهو في هذه المشاركة الشرح واضح ومستفيض بس الكود الأخير مش قادر فاهمة والله يا ليت حل بديل أو على الأقل شرح الكود وشكرا
  14. يا سيدي سأرفق لك المثال و آمل ان تتحملني :happy: ErrorSave.rar
  15. السلام عليكم عندي جدولين Order والجدول الثاني OrderDetails مرتبطين ببعظهم بعلاقة واحد الى متعدد عملت فورم واضفت له كلا الجدولين بس المشكلة عند ادراج صف في حقول Order ثم الانتقال لادراج صف في حقول OrderDetails وعند النقر على مفتاح الحفظ تظهر رسالة خطأ : A foreign key value cannot be inserted because a corresponding primary key value does not exist جربت عملت Cascade بين الجدولين وكمان عملت Cascade في العلاقة الموجودة بين DataTable ,, ولكن لم انجح في حل المشكلة . هل يوجد حل او حيلة خصوصا انني احتاج لوجود الجدولين في نفس الفورم . آمل بحق أن اجد جواب تام يحل لي المشكلة وشكرا.