在PB下开发,我们经常遇到要把数据库的数据导出来变成Excel的问题。网络上有利用第三方组件去完成这个任务的例子。我这里介绍用DataStore检索数据,然后导出Excel。

关键点:


  • 1.SyntaxFromSQL
  • 2.DataStore.Create from the format SQL
  • 3.DataStore.SetTransObject
  • 4.DataStore.Retrieve
  • 5.DataStore.SaveAs

源代码:


  1. string ERRORS, sql_syntax 
  2.  
  3. string presentation_str, dwsyntax_str 
  4.  
  5. sql_syntax = "select id, fname, lname, address, phone from customer" 
  6.  
  7. presentation_str = "style(type=grid)" 
  8.  
  9. dwsyntax_str = SQLCA.SyntaxFromSQL(sql_syntax, presentation_str, ERRORS) 
  10.  
  11. IF Len(ERRORS) > 0 THEN 
  12.    MessageBox("Caution""SyntaxFromSQL caused these errors: " + ERRORS) 
  13.    GOTO Exit_PT 
  14. END IF 
  15.  
  16. DataStore dob 
  17. dob = create DataStore 
  18. dob.create(dwsyntax_str, ERRORS) 
  19.  
  20. IF Len(ERRORS) > 0 THEN 
  21.    MessageBox("Caution""Create cause these errors: " + ERRORS) 
  22.    GOTO Exit_PT 
  23. END IF 
  24.  
  25. IF dob.SetTransObject(SQLCA) <> 1 THEN 
  26.    MessageBox("Caution""Fail at SetTransObject"
  27.     GOTO Exit_PT 
  28. END IF 
  29.  
  30. IF dob.Retrieve() = -1 THEN 
  31.    MessageBox("Caution""Fail at Retrieve"
  32.     GOTO Exit_PT 
  33. END IF 
  34.  
  35. IF dob.SaveAs("C:\test.XLS", Excel!, true) <> 1 THEN 
  36.    MessageBox("Caution""Fail at SaveAs"
  37.     GOTO Exit_PT 
  38. ELSE 
  39.     MessageBox("Caution""SUCCEED"
  40. END IF 
  41.  
  42. Exit_PT:  
  43. IF IsValid(dob) THEN 
  44.     Destroy dob 
  45. END IF 

导出的Excel: