  | 
              
	              
	                
  
    
	 
        เชื่อมต่อข้อมูลกับระบบบัญชี Express สามารถทำได้ไหม ( Database File .DBF )     | 
   
  
    |   | 
   
 
 
 
              
  
          
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 DBF ของ express น่าจะเป็น old format 
 
ว่าจะบอกให้เปลี่ยน driver ใหม่ แต่ไม่แสดง error connection แสดงว่า connect ผ่าน 
https://www.connectionstrings.com/visual-foxpro/ 
 
ผมไม่มี Express ในมือ ถ้าสะดวกลองส่งไฟล์ DBF ที่สร้างจาก Express มาเป็นกรณีศึกษาก็ดีครับ                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2022-03-24 11:45:16 | 
                        By :
                            009 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 https://www.somacon.com/p251.php 
เห็นในนี้ใช้ PDO DSN odbc กับ dbf visual fox pro ได้ ไม่เคยลอง ไม่มี express 
ทดลองดูว่าได้ไหมนะครับ                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2022-03-30 15:15:15 | 
                        By :
                            mr.v | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 เชื่อมต่อ PHP กับไฟล์ .DFB ได้แล้วแต่ติดปัญหาตรงที่อ่านได้แค่ไฟลล์ในเครื่องตัวเอง 
 
เปลี่ยนเป็นอ่านข้อมูลจากการ Map Drive หรืออ่านข้ามเครื่อง จะขึ้น ERROR ดังรูป 
เหมือนว่าเชื่อมต่อ Database ได้ แต่อ่านข้อมูลไม่ได้ ไม่รู้จะแก้ยังไงแล้ว ลองมาหลายวิธีก็ยังทำไม่ได้ t_t 
รบกวนขอคำแนะนำหน่อยนะคะ 
 
                         
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2022-04-04 15:22:26 | 
                        By :
                            Pep_Fare | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 เครื่องที่อ่านได้ติดตั้ง driver/runtime หรือยัง 
 
ตอน connect ใช้ connection string หรือ DSN ถ้าอย่างหลังได้สร้าง DSN เพื่อชี้ไปยัง Network Drive หรือไม่ 
 
อีกวิธี encrypt data ผ่าน webservice                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2022-04-04 18:02:20 | 
                        By :
                            009 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ถ้ามันอ่านไฟล์เดียวกัน 
ในเครื่องได้ 
ผ่าน network ไม่ได้ 
ทำไมไม่ map network มาเป็นส่วนหนึ่งที่ web server เข้าถึงได้ แล้วก็ใช้ PHP ดาวน์โหลดมันลงมาก่อน แล้วค่อยเปิดอ่าน                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2022-04-05 11:51:41 | 
                        By :
                            mr.v | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 จุดประสงค์การติดตั้ง runtime เพื่อให้มันลง driver ให้ ถ้าลง driver แล้วก็ไม่ต้องลง runtime อีกครับ 
(runtime คือ driver+interface สามารถจัดการฐานข้อมูลได้โดยไม่ต้องลง client application ในที่นี้ คือ Visual FoxPro) 
 
ส่วนการ connect ผ่าน Network Drive จริงๆ ไม่เคยลอง แต่เคยอ่านเจอว่าสำหรับ ODBC Driver ถ้า folder ที่ map ไม่มี permission แบบ writable เครื่องปลายทางจะ connect หรือติดต่อกับ ไฟล์ที่อยู่ใน map drive ไม่ได้ 
 
webservice ก็พวก Restful API นั่นแหละครับ แต่ควร expose เฉพาะส่วนของข้อมูลที่ต้องการ 
(แน่นอนว่าควร encrypt ก่อน แม้จะมี access token ก็ตาม) 
 
หรือทำตามคุณวี คือ โหลดข้อมูลมายังเครื่องที่จะใช้อ่านทั้งไฟล์เลยแล้วจะได้การ connect ด้วย DSN แบบ local 
 
ลองดูครับ                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2022-04-05 12:43:51 | 
                        By :
                            009 | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	     
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ถ้าต้องบันทึกข้อมูลด้วย ก็ใช้หลักการคล้ายของเดิม 
อาจจะติดตั้ง web server ทางเครื่องที่เก็บไฟล์ด้วยเลย แล้วให้มันทำหน้าที่แค่  
ตรวจ api key -> ถ้าถูกก็รอรับคำสั่ง,  
สั่งดาวน์โหลด -> ก็ส่งไฟล์ที่จะเอาไปแก้ให้ปลายทางที่เรียก ใช้หลักการส่ง download content อย่างพวก readfile() (ลองหา php force download),  
สั่งอัพโหลด คือแก้มาเสร็จแล้ว -> ก็รับไฟล์มาวางทับของเก่า ใช้หลักการ upload ธรรมดา 
 
วิธีนี้จะป้องกันการเรียกสุ่มจากภายนอกได้ เพราะต้องตรวจ api key เสมอ. ให้เฉพาะมาจากปลายทางที่เราอนุญาต.                        
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2022-04-05 14:35:05 | 
                        By :
                            mr.v | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
               
		
     
		
	  
        
             | 
            | 
            | 
             | 
         
        
             | 
                       | 
          
            
               
                 ใช้อยู่ 
Connect RealTime ระบบบัญชี Express 
 
Web Server->Request APIs ไปยัง Server Express 
 
1. ติดตั้ง 
Microsoft Visual C++ 2015-2019 Redistributable 
Microsoft OLE DB Provider for Visual Foxpro 8 และ 9 
ที่ Server Express 
 
2. Download "ADOdb" 
https://adodb.org/dokuwiki/doku.php?id=index 
 
3. สร้าง REST SERVER 
 
QUERY 
 
Code (PHP) 
require_once(FCPATH.'ADOdb-5.21.2/adodb.inc.php');
public function stmasTable($path_db = 'D:\EXPRESS\FolderName') {
   $conn = ADONewConnection('ado')or die("Unable to connect DB");
   $dsn = "Provider=vfpoledb;Data Source=".realpath($path_db)."";
   $conn->Connect($dsn);
   $conn->setFetchMode(ADODB_FETCH_ASSOC);
   $query_select = "T1.`stkcod`,
      T1.`stkdes`,
      T1.`stkdes2`,
      T1.`stktyp`,
      T1.`stkgrp`,
      T2.`typdes`,
      T1.`stkcods`,
      T1.`acccod`,
      T1.`barcod`,
      T1.`stkclass`,
      T1.`negallow`,
      DTOC(T1.`lasupd`) AS `lasupd`,
      T1.`packing`,
      T1.`qucod`,
      T1.`cqucod`,
      T3.`typdes` AS `unit`,
      T1.`cfactor`,
      T1.`totbal`,
      T1.`pqucod`,
      T1.`mlotnum`,
      T1.`remark`,
      T1.`dat1`,
      T1.`dat2`,
      T1.`num1`,
      T1.`str1`,
      T1.`str2`,
      T1.`str3`,
      T1.`str4`,
      T1.`lsellqu`,
      T1.`lsellfac`,
      T1.`lsellpr`,
      DTOC(T1.`lseldat`) AS `lseldat`,
      T1.`creby`,
      DTOC(T1.`credat`) AS `credat`,
      T1.`userid`,
      DTOC(T1.chgdat) AS `chgdat`";
   $result = $conn->Execute("SELECT 
      {$query_select}
   FROM 
      `stmas` T1 
   LEFT JOIN
      `istab` T2 ON T1.`stkgrp` = T2.`typcod` AND T2.`tabtyp` = '22'
   LEFT JOIN
      `istab` T3 ON T1.`cqucod` = T3.`typcod` AND T3.`tabtyp` = '20'
   WHERE 
      T1.`stktyp` = '0' 
      AND 
      T1.`totbal` > 0 
   ORDER BY 
      T1.`stkcod` ASC");
   return $result;
}
 
 
                         
               
               | 
             
            
              
			                              
                              
              
                
                     | 
                     | 
                     | 
                 
                
                     | 
                  
                      
                        | Date :
                            2024-10-22 10:34:31 | 
                        By :
                            Guest | 
                         
                    | 
                     | 
                 
                
                     | 
                     | 
                     | 
                 
                | 
             
           
			         | 
             | 
         
        
             | 
            | 
             | 
             | 
         
          
	    
     
      		  
	
     | 
   
 
                 |