J'utilise php pour mettre à jour certaines tables sous VFP 9.0 en utilisant ADO COM.Visual foxpro mise à jour DBF en utilisant php
Je suis capable de sélectionner et de mettre à jour le DBF jusqu'à ce que je spécifie une clause Où.
Au moment où j'ajoute une clause where à la requête, elle renvoie simplement ou met à jour 0 lignes.
$conn = new COM("ADODB.Connection");
$conn->Open('Provider=VFPOLEDB.1;Data Source="C:\\testDB.dbc";');
$query = "UPDATE TABLE1 set COL1 = \"AA\", COL2 = \"Updated value\" ";
$conn->Execute($query);
$query = "SELECT * FROM TABLE1 ";
$rs = $conn->Execute($query) or die("Error in query: $query. " . $conn->ErrorMsg());
while (!$rs->EOF) {
echo " Got COL1: " . $rs->Fields("COL1") . " :: COL2: " . $rs->Fields("COL2") . " id: " . $rs->Fields("ID") . "\n";
$rs->MoveNext();
}
Résultat:
Got COL1: AA :: COL2: Updated value id: 0
Got COL1: AA :: COL2: Updated value id: 1
Got COL1: AA :: COL2: Updated value id: 2
Code 2: Avec clause Where
$query = "UPDATE TABLE1 set COL1 = \"BB\", COL2 = \"NEW2\" WHERE ID = 1";
$conn->Execute($query);
$query = "SELECT * FROM TABLE1 ";
$rs = $conn->Execute($query) or die("Error in query: $query. " . $conn->ErrorMsg());
while (!$rs->EOF) {
echo " Got COL1: " . $rs->Fields("COL1") . " :: COL2: " . $rs->Fields("COL2") . " id: " . $rs->Fields("ID") . "\n";
$rs->MoveNext();
}
Résultat:
Got COL1: AA :: COL2: Updated value id: 0
Got COL1: AA :: COL2: Updated value id: 1
Got COL1: AA :: COL2: Updated value id: 2
La colonne ID est la clé dans le tableau ci-dessus.
Je suis relativement nouveau à VFP. Je ne suis pas sûr que ce soit un paramètre Visual Foxpro ou autre chose qui empêche les mises à jour ou sélectionnez si fait de manière sélective.
Ce n'est pas un problème avec les guillemets en tant que tels puisque la requête sans la clause WHERE fonctionne très bien. Mais merci quand même. Quelqu'un m'a suggéré d'utiliser Cast comme une solution de contournement [ où cast (ID as I) = 1] et cela semble fonctionner correctement pour moi. – mtanish